حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش پایتون پروژه‌محور؛ قسمت سوم: شیءگرایی تا ساخت برنامه

ارث‌بری در پایتون؛ بازنویسی متد و کاربرد super

ارث‌بری و ترکیب اشیا در پایتون · 0٪

اگه UrgentTask واقعاً نوعی Task هست، می‌تونیم از ارث‌بری استفاده کنیم. نام کلاس پایه داخل پرانتز میاد. زیرکلاس ویژگی‌ها و متدهای پایه رو در اختیار داره و می‌تونه رفتار ویژه اضافه کنه.

وقتی متد label رو در زیرکلاس دوباره می‌نویسیم، به این کار بازنویسی متد یا override می‌گن. super() کمک می‌کنه از نسخه بعدی متد در مسیر ارث‌بری استفاده کنیم؛ در این مثال، همون متد کلاس پایه هست. با super().__init__(title) بخش مشترک آماده‌سازی رو دوباره نمی‌نویسیم.

class Task:
    def __init__(self, title):
        self.title = title

    def label(self):
        return self.title

class UrgentTask(Task):
    def __init__(self, title, deadline):
        super().__init__(title)
        self.deadline = deadline

    def label(self):
        return f"فوری: {super().label()} تا {self.deadline}"

print(UrgentTask("ارسال تمرین", "جمعه").label())

خروجی: فوری: ارسال تمرین تا جمعه. در این مثال هر زیرکلاس فقط یک کلاس پایه داره. همین مقدار برای تمرین ما کافیه؛ لازم نیست چندین لایه کلاس بسازیم.

فعالیت شما

زیرکلاس، override و استفاده از super رو در یک مثال دنبال کن.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

class Task:
    def __init__(self, title):
        self.title = title

    def label(self):
        return self.title

class UrgentTask(Task):
    def __init__(self, title, deadline):
        super().__init__(title)
        self.deadline = deadline

    def label(self):
        return f"فوری: {super().label()} تا {self.deadline}"

print(UrgentTask("ارسال تمرین", "جمعه").label())