الوراثة
الفئة الابنة تحتفظ بما تخزّنه الفئة الأصل، وتستطيع أن تستبدل مهمة واحدة. Desk ابن لـ Lamp، وتكتبه هكذا: Desk(Lamp). الابن لا يثبّت حزمة ولا ينشئ مجلدًا. ما زال Desk("blue") يخزّن الكلمة blue، لأن الابن لم يعد كتابة init. تابع label في الأب ما زال يضع glow قبل الكلمة، وتابع label في الابن يضع desk قبلها. تبني كل مصباح بنفسك؛ فالسطر class Desk(Lamp) لا يبني لك أي مصباح.
class Lamp:
def __init__(self, color):
self.color = color
def label(self):
return "glow " + self.color
class Desk(Lamp):
def label(self):
return "desk " + self.color
plain = Lamp("blue")
desk = Desk("blue")
print(plain.label())
print(desk.label())
يظهر على الشاشة سطران. الأول glow blue والثاني desk blue. بُني plain من Lamp، فتعمل مهمة الأب. وبُني desk من Desk، فتعمل مهمة الابن. في كل سطر مسافة واحدة بين الكلمة الأمامية وblue. المصباحان يخزّنان الكلمة نفسها، والذي تغيّر هو المهمة التي تسبقها فقط. print هي التي تكتب السطرين، أما التوابع فتُرجع الكلمات.
الابن لا يعيد كتابة الأب. المصباح المبني من Lamp ما زال يقول glow blue. ومصباح red من الصفحة السابقة غير موجود هنا. الذي تغيّر هو أي مهمة تعمل مع Desk. plain.color وdesk.color كلاهما blue. لم يخزّن الابن لونًا جديدًا، بل استبدل label فقط. ولو لم يكن للابن label خاصة به، لعمل سطر glow الخاص بالأب مع مصباح المكتب أيضًا. لكن لهذا الابن label خاصة به، ولذلك يكون السطر الثاني desk blue.
الصفحة التالية: التوابع الخاصة. هذه الصفحة تعرض فقط ابنًا يحتفظ بالكلمة المخزّنة ويستبدل مهمة واحدة.
الابن يحتفظ بالكلمة
Desk ابن لـ Lamp. تعرض الشاشة glow blue ثم desk blue، وتبقى الكلمة المخزّنة blue. الابن يستبدل label ولا يعيد كتابة الأب. الصفحة التالية: التوابع الخاصة.
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى