classmethod() مُزيّن دالة الصنف
آخر تحديث: 2026-09-22
classmethod() مُزيّن دالة الصنف
يعلّم @classmethod دالةً كدالة صنف، ومعاملها الأول هو cls (الصنف نفسه).
| التصنيف | الدوال المدمجة |
|---|---|
| النوع | دالة مدمجة |
| إصدار بايثون | all |
📝 الصياغة
@classmethod
def func(cls, ...)
⚙️ المعاملات
| function مطلوب | The function to wrap as a class method. |
|---|
القيمة المُعادة:A classmethod descriptor, usable as a decorator.
💥 الاستثناءات
TypeError— Raised when the argument is not callable.
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
2
🏷️ دوال مدمجة ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qما الفرق بين classmethod و staticmethod؟
Aيستقبل classmethod كوسيطته الأولى cls (الصنف نفسه) فيمكنه الوصول إلى خصائص الصنف واستدعاء أساليب الصنف الأخرى؛ أما staticmethod فلا يستقبل أي وسيطة خاصة ويشبه الدالة العادية.
Qهل يمكن استدعاء أسلوب الفئة عبر كائن؟
Aنعم، كلا C().inc() و C.inc() صالحان؛ سواء استُدعي عبر الصنف أو الكائن، تكون الوسيطة الأولى لـ classmethod هي الصنف نفسه دائمًا.
Qلأي شيء تُستخدم أساليب الفئة عادةً؟
Aكطرق مصنع (مثل Date.today())، أو للوصول إلى خصائص الصنف وتعديلها، أو لتعريف مُنشئات بديلة لتحقيق الإنشاء متعدد الأشكال.
Qلماذا يغيّر cls.count += 1 في أسلوب الفئة متغير الصنف؟
Aلأن cls هو الصنف نفسه؛ التعديل عبر cls يغيّر خاصية الصنف. أما كتابة self.count فتصبح خاصية كائن، والاثنان مختلفان.