المزخرف Class Method
جزء من قسم Object Oriented Programming في رحلة Python على Coddy — الدرس 12 من 64.
يقوم المزخرف @classmethod بإنشاء دوال تستقبل الفئة نفسها كمعامل أول (cls) بدلاً من كائن (self).
إليك مثال على فئة (class) تحتوي على دوال فئة (class methods):
class Student:
school_name = "Python Academy"
student_count = 0
def __init__(self, name):
self.name = name
Student.student_count += 1
@classmethod
def get_school_info(cls):
return f"School: {cls.school_name}, Students: {cls.student_count}"
@classmethod
def create_guest_student(cls):
return cls("Guest")استدعِ دوال الفئة (class methods) باستخدام اسم الفئة:
info = Student.get_school_info()
print(info)أنشئ بعض الطلاب:
alice = Student("Alice")
bob = Student("Bob")
updated_info = Student.get_school_info()
print(updated_info)استخدم دوال الفئة (class methods) كمنشئات بديلة:
guest = Student.create_guest_student()
print(guest.name)
print(Student.get_school_info())المخرجات:
School: Python Academy, Students: 0
School: Python Academy, Students: 2
Guest
School: Python Academy, Students: 3يمكن أيضًا استدعاء دوال الفئة (Class methods) من خلال المثيلات (instances):
alice = Student("Alice")
info_from_instance = alice.get_school_info()
print(info_from_instance)المخرجات:
School: Python Academy, Students: 1نقطة رئيسية: استخدم @classmethod عندما تحتاج إلى الوصول إلى سمات الفئة (class attributes) أو إنشاء طرق بديلة لإنشاء الكائنات. المعامل الأول هو cls (الفئة نفسها)، وليس self.
ورقة مرجعية
يقوم المزخرف @classmethod بإنشاء دوال تستقبل الفئة نفسها كمعامل أول (cls) بدلاً من النسخة (self).
class Student:
school_name = "Python Academy"
student_count = 0
def __init__(self, name):
self.name = name
Student.student_count += 1
@classmethod
def get_school_info(cls):
return f"School: {cls.school_name}, Students: {cls.student_count}"
@classmethod
def create_guest_student(cls):
return cls("Guest")استدعِ دوال الفئة باستخدام اسم الفئة:
info = Student.get_school_info()
guest = Student.create_guest_student()يمكن أيضاً استدعاء دوال الفئة من النسخ:
alice = Student("Alice")
info_from_instance = alice.get_school_info()استخدم @classmethod عندما تحتاج إلى الوصول إلى سمات الفئة أو إنشاء طرق بديلة لإنشاء الكائنات.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
1أساسيات OOP
الملفات الخارجيةمقدمة في OOPClasses مقابل Objectsمعامل selfMethodsAttributesدالة البناء (__init__)مراجعة - آلة حاسبة بسيطة4الوراثة
الوراثة الأساسيةدالة ()superإعادة تعريف الدوال (Method Overriding)الوراثة المتعددةترتيب استدعاء الدوال (Method Resolution Order)مراجعة - هيكلية الموظفين5تعدد الأشكال
مراجعة إعادة تعريف الدوالمفهوم Duck Typingالأصناف والدوال المجردةتصميم الواجهاتملخص - حاسبة الأشكال