الدرس 6 من 10
صنف يرث صنفًا
- 14 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
أضف قاعدتك واترك الباقي للأب
الشرح
الصنف الفرعي يرث دوال أبيه كلها، ثم يضيف إليها أو يغيّر بعضها. وclass SavingsAccount(Account) تعني أن حساب التوفير حساب: يودع ويسحب مثله، وكل كود يقبل Account يقبله.
وحين تكتب في الابن دالة بالاسم نفسه فإنها تتجاوز دالة الأب. لكن لا تنسخ منطق الأب إليها: أضف قاعدتك ثم نادِ super().withdraw(amount) ليُكمل الأب عمله، فتبقى قاعدة الرصيد مكتوبة في مكان واحد.
والفخّ الأشهر: __init__ في الابن يحلّ محلّ __init__ الأب كاملًا. إن لم تستدعِ super().__init__(owner) فلن يوجد self.balance، ولن يظهر الخطأ عند الإنشاء بل عند أول إيداع، بعيدًا عن سببه.
المطلوب
أكمل SavingsAccount(owner, limit): يستدعي __init__ الأب ويحفظ limit، ويتجاوز withdraw ليرمي ValueError إن زاد المبلغ على limit، ثم يترك الباقي للأب.
معايير التصحيح
6 معايير- SavingsAccount صنف فرعي من Account
- يستدعي __init__ الأب فيبدأ الرصيد من صفر
- السحب فوق الحدّ يرمي ValueError ولا يمسّ الرصيد
- السحب ضمن الحدّ يعمل
- قاعدة الرصيد الموروثة باقية
- Account نفسه بلا حدّ