الدرس 6 من 10

صنف يرث صنفًا

هدف الدرس

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

01

الشرح

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

وإذا كتبت في الابن دالة بالاسم نفسه فإنها تحلّ محلّ دالة الأب (override)، لكن لا تنسخ كود الأب إليها، بل أضف قاعدتك ثم استدعِ 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)

نحمّل بيئة Python الآن. يحدث هذا مرّة واحدة فقط، ثم يحفظها متصفّحك.

–/6

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

تجد 6 فحوص في بطاقة «المطلوب».