13.4 الوراثة الهرمية
أهداف التعلم
في نهاية هذا القسم، ينبغي أن تكون قادرًا على
- تحديد العلاقات بين الأصناف كأنواع من الوراثة.
- بناء أصناف تشكل وراثة هرمية.
أساسيات الوراثة الهرمية
الوراثة الهرمية نوع من الوراثة ترث فيه أصناف متعددة من صنف أب واحد. الوراثة متعددة المستويات (Multilevel inheritance) نوع من الوراثة يصبح فيه الصنف الفرعي صنفًا أبًا لصنف آخر. يؤدي الجمع بين الوراثة الهرمية والوراثة متعددة المستويات إلى إنشاء تنظيم هرمي للأصناف يشبه الشجرة.
مفاهيم تطبيقية
التنظيم الهرمي
تطبيق الوراثة الهرمية
يمكن لأصناف متعددة أن ترث من صنف واحد بإدراج اسم الصنف الأب في تعريف كل صنف فرعي.
مثال 13.4
أعضاء الجوقة
class ChoirMember:
def display(self):
print("Current choir member")
class Soprano(ChoirMember):
def display(self):
super().display()
print("Part: Soprano")
class Soprano1(Soprano):
def display(self):
super().display()
print("Division: Soprano 1")
class Alto(ChoirMember):
def display(self):
super().display()
print("Part: Alto")
class Tenor(ChoirMember):
def display(self):
super().display()
print("Part: Tenor")
class Bass(ChoirMember):
def display(self):
super().display()
print("Part: Bass")
mem_10 = Alto()
mem_13 = Tenor()
mem_15 = Soprano1()
mem_10.display()
print()
mem_13.display()
print()
mem_15.display()
مخرجات الشِفرة هي:
Current choir member
Part: Alto
Current choir member
Part: Tenor
Current choir member
Part: Soprano
Division: Soprano 1
مفاهيم تطبيقية
تطبيق الوراثة الهرمية
تأمل البرنامج التالي:
class A:
def __init__(self, a_attr=0):
self.a_attr = a_attr
class B(A):
def __init__(self, a_attr=0, b_attr=0):
super().__init__(a_attr)
self.b_attr = b_attr
class C(A):
def __init__(self, a_attr=0, c_attr=0):
super().__init__(a_attr)
self.c_attr = c_attr
class D(B):
def __init__(self, a_attr=0, b_attr=0, d_attr=0):
super().__init__(a_attr, b_attr)
self.d_attr = d_attr
b_inst = B(2)
c_inst = C(c_attr=4)
d_inst = D(6, 7)
جرّب بنفسك
إعادة تعريف التوابع
عرّف ثلاثة أصناف: Instrument، وWoodwind، وString.
Instrumentلديه سمة مثيلowner، بقيمة افتراضية هي "unknown".Woodwindيرث منInstrumentولديه سمة مثيلmaterialبقيمة افتراضية هي "wood".Stringيرث منInstrumentولديه سمة مثيلnum_strings، بقيمة افتراضية هي 4.
يجب أن تتطابق المخرجات مع ما يلي:
This flute belongs to unknown and is made of silver
This cello belongs to Bea and has 4 strings