13.2 الوصول إلى السمات
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على
- تطبيق صنف فرعي يصل إلى السمات الموروثة من الصنف الأساسي.
- كتابة الدالّة
__init__()لصنف فرعي يرث سمات المثيل من الصنف الأساسي وينشئ سمات مثيل جديدة.
إنشاء صنف فرعي بسيط
تتمتع الأصناف الفرعية بالوصول إلى السمات الموروثة من الصنف الأساسي. عندما لا تُعرَّف الدالّة __init__() للصنف الفرعي بشكل صريح، يُستدعى تابع __init__() للصنف الأساسي. ولا يختلف أسلوب الوصول إلى كلا نوعَي السمات.
مفاهيم تطبيقية
استخدام الأصناف الفرعية البسيطة
استخدام __init__() لإنشاء ووراثة سمات المثيل
غالبًا ما يرغب المبرمج في أن يمتلك الصنف الفرعي سمات مثيل جديدة بالإضافة إلى تلك الموروثة من الصنف الأساسي. يشمل التعريف الصريح للدالّة __init__() في الصنف الفرعي تحديدَ سمات المثيل الجديدة وتهيئةَ السمات الموروثة من الصنف الأساسي.
مفاهيم تطبيقية
الوصول إلى سمات الصنف الفرعي
تأمل شفرةَ مثال Employee و Developer:
class Employee:
count = 0
def __init__(self):
Employee.count += 1
self.e_id = Employee.count
self.hire_year = 2023
def emp_display(self):
print(f"Employee {self.e_id} hired in {self.hire_year}")
class Developer(Employee):
def __init__(self):
Employee.count += 1
self.e_id = Employee.count
self.hire_year = 2023
self.lang_xp = ["Python", "C++", "Java"]
def dev_display(self):
print(f"Proficient in {self.lang_xp}")
emp_1 = Employee()
dev_1 = Developer()
جرّب بنفسك
إنشاء صنف فرعي بسمة مثيل
انطلاقًا من الصنف Dessert المعطى، أنشئ صنفًا باسم Cupcake يرث منه. توابع الصنف Cupcake:
__init__(self): يهيئ سمة المثيل الموروثةingredientsبالقائمة["butter", "sugar", "eggs", "flour"]، ويهيئ سمة المثيلfrostingبالقيمة"buttercream"display(self): يطبع مكونات الكب كيك وطبقة التزيين
ثم استدعِ التابع display() على كائن Cupcake جديد، وينبغي أن يكون الإخراج على النحو التالي:
Made with ["butter", "sugar", "eggs", "flour"] and topped with buttercream frosting