اگه 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 رو در یک مثال دنبال کن.