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.

💥 الاستثناءات

▶ مثال

عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:

المخرجات:

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 فتصبح خاصية كائن، والاثنان مختلفان.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%