الفصل 13
13.1 أساسيات الوراثة
2.
b.
يحتوي المطبخ على مجمّد، لذا فإن الصنف
Kitchen سيحتوي على مثيل من Freezer. تُسمى علاقة "يحتوي-على" أيضًا تركيبًا.
5.
a.
يُحدَّد اشتقاق
CarryOn من Luggage في تعريف الصنف الخاص بـ CarryOn. مثال:
class CarryOn(Luggage):
. تُنشأ مثيلات من الصنف الفرعي، مثل CarryOn، مثل الأصناف الأخرى ولا تتطلب اسم الصنف الأساسي.
6.
c.
يمتلك مثيل من
SubClass صلاحية الوصول إلى func_1()، الموروثة من SuperClass، وكذلك إلى func_2()، وهو تابع (method) خاص بـ SubClass.
7.
a.
يمتلك مثيل من
SuperClass صلاحية الوصول إلى func_1() الخاص بـ SuperClass ولكن ليس لديه صلاحية الوصول إلى أي شيء في SubClass، بما في ذلك func_2().
13.2 الوصول إلى السمات
1.
b.
dev_1 هو ثاني كائن (object) من Employee تم إنشاؤه. لذا، dev_1 هو الكائن الثاني الذي يستدعي Employee.__init__()، ويُسند إلى dev_1.e_id القيمة
2
.
2.
a.
لم يتم تعريف
__init__() الخاص بـ SubClass' بشكل صريح، لذا يتم تنفيذ __init__() الخاص بـ SuperClass'.
5.
c.
dev_display() هو تابع خاص بـ Developer. emp_1 ليس مثيلًا من Developer، لذا لا يمكن لـ emp_1 الوصول إلى dev_display().
6.
a.
يتم الوصول إلى سمات المثيل الموروثة من
Employee، وهو الصنف الأساسي، بالطريقة نفسها للوصول إلى سمات المثيل الخاصة بالصنف الفرعي Developer.
13.3 التوابع
5.
a.
super().__init__(4) يستدعي __init__() الخاص بالصنف الأساسي لـ Rectangle، وهو Polygon. ينتقل التحكم إلى السطر 3، ويُهيّأ num_sides بالقيمة 4.
13.4 الوراثة الهرمية
2.
b.
سيكون
Employee صنفًا أساسيًا مناسبًا لـ Developer و SalesRep. Developer و SalesRep غير مرتبطان مباشرة .
4.
b.
يمتلك
c_inst صلاحية الوصول إلى سمة المثيل الخاصة بـ C، وهي c_attr، وكذلك السمة الموروثة من A، وهي a_attr.
13.5 الوراثة المتعددة وأصناف mixin
2.
b.
لم يتم تمرير وسيط إلى
__init__() الخاص بـ C للمُعامِل c_attr، لذا يُسند إلى c_attr القيمة الافتراضية، وهي
20
.
6.
b.
من الممارسة الجيدة أن ينتهي اسم صنف mixin بـ
"Mixin"
لتوضيح غرض الصنف. والتطبيق النهائي هو:
class Plant:
def photosynth(self):
print("Photosynthesizing")
class CarnivMixin:
def eat(self):
print("Eating")
class Rose(Plant):
pass
class Pitcher(Plant, CarnivMixin):
pass
class VenusFlyTrap(Plant, CarnivMixin)
pass