الدرس 6 من 10

صنف يرث صنفًا

هدف الدرس

أضف قاعدتك واترك الباقي للأب

01

الشرح

الصنف الفرعي يرث دوال أبيه كلها، ثم يضيف إليها أو يغيّر بعضها. وclass SavingsAccount(Account) تعني أن حساب التوفير حساب: يودع ويسحب مثله، وكل كود يقبل Account يقبله.

وحين تكتب في الابن دالة بالاسم نفسه فإنها تتجاوز دالة الأب. لكن لا تنسخ منطق الأب إليها: أضف قاعدتك ثم نادِ super().withdraw(amount) ليُكمل الأب عمله، فتبقى قاعدة الرصيد مكتوبة في مكان واحد.

والفخّ الأشهر: __init__ في الابن يحلّ محلّ __init__ الأب كاملًا. إن لم تستدعِ super().__init__(owner) فلن يوجد self.balance، ولن يظهر الخطأ عند الإنشاء بل عند أول إيداع، بعيدًا عن سببه.

02

المطلوب

أكمل SavingsAccount(owner, limit): يستدعي __init__ الأب ويحفظ limit، ويتجاوز withdraw ليرمي ValueError إن زاد المبلغ على limit، ثم يترك الباقي للأب.

معايير التصحيح

6 معايير
  1. SavingsAccount صنف فرعي من Account
  2. يستدعي __init__ الأب فيبدأ الرصيد من صفر
  3. السحب فوق الحدّ يرمي ValueError ولا يمسّ الرصيد
  4. السحب ضمن الحدّ يعمل
  5. قاعدة الرصيد الموروثة باقية
  6. Account نفسه بلا حدّ
main.py
المخرجاتPython · Pyodide

جارٍ تحميل بيئة بايثون… تُحمَّل مرّة واحدة ثم يحفظها المتصفح.

–/6

يبدأ الفحص حين تجهز البيئة.

6 معايير في بطاقة «المطلوب».