مفهوم وراثت در پایتون
پایتون یک زبان برنامهنویسی شیگرا است که مفاهیم مختلف شیگرایی مانند کلاس، شی، وراثت، چندشکلی و غیره را پشتیبانی میکند. در این درس، میخواهیم به یکی از مهمترین مفاهیم شیگرایی یعنی وراثت بپردازیم.
تعریف وراثت
وراثت یکی از مکانیزمهای مهم در برنامهنویسی شیگرا است که به ما اجازه میدهد یک کلاس جدید را بر اساس یک کلاس موجود تعریف کنیم. کلاس جدید که از کلاس موجود ارث میبرد، تمام خصوصیات و روشهای کلاس موجود را به ارث میبرد و میتواند خصوصیات و روشهای جدیدی را نیز اضافه کند.
مثال وراثت در زندگی واقعی
فرض کنید شما دانشآموز یک مکتب هستید و میخواهید یک برنامه بنویسید که مشخصات دانشآموزان را مدیریت کند. میتوانید یک کلاس به نام `دانشآموز` تعریف کنید که دارای خصوصیات و روشهایی مانند نام، سن، نمرات و غیره باشد.
ولی اگر بخواهید دانشآموزان ورودیهای مختلفی مانند دانشآموزان جدید الورود، دانشآموزان ممتاز و غیره را مدیریت کنید، میتوانید از وراثت استفاده کنید. میتوانید یک کلاس `دانشآموز` پایه تعریف کنید و سپس کلاسهای جدیدی مانند `دانشآموز_جدید_الورود` و `دانشآموز_ممتاز` را بر اساس کلاس `دانشآموز` تعریف کنید.
تعریف کلاس پایه و کلاس مشتق
کلاس پایه یا کلاس والد، کلاسی است که از آن ارث میبریم. کلاس مشتق یا کلاس فرزند، کلاسی است که از کلاس پایه ارث میبرد.
- کلاس پایه یا والد: کلاسی که دارای خصوصیات و روشهای مشترکی است که میخواهیم در کلاسهای مشتق نیز وجود داشته باشد.
- کلاس مشتق یا فرزند: کلاسی که از کلاس پایه ارث میبرد و خصوصیات و روشهای جدیدی را اضافه میکند.
ساختار وراثت در پایتون
در پایتون، برای تعریف یک کلاس مشتق، کافی است نام کلاس مشتق را همراه با نام کلاس پایه در پرانتزها بنویسیم.
class دانشآموز:
def __init__(self, نام, سن):
self.نام = نام
self.سن = سن
def نمایش_مشخصات(self):
print(f"نام: {self.نام}, سن: {self.سن}")
class دانشآموز_جدید_الورود(دانشآموز):
def __init__(self, نام, سن, تاریخ_ورود):
super().__init__(نام, سن)
self.تاریخ_ورود = تاریخ_ورود
def نمایش_مشخصات(self):
super().نمایش_مشخصات()
print(f"تاریخ ورود: {self.تاریخ_ورود}")
استفاده از کلمه کلیدی super
در کد بالا، از کلمه کلیدی `super` برای دسترسی به خصوصیات و روشهای کلاس پایه استفاده کردیم. کلمه کلیدی `super` به ما اجازه میدهد به کلاس پایه دسترسی داشته باشیم و از خصوصیات و روشهای آن استفاده کنیم.
مزایای وراثت
وراثت مزایای زیادی دارد، از جمله:
- کد تکراری را کاهش میدهد: با استفاده از وراثت، میتوانید خصوصیات و روشهای مشترکی را در کلاس پایه تعریف کنید و در کلاسهای مشتق از آن استفاده کنید.
- انعطافپذیری را افزایش میدهد: وراثت به شما اجازه میدهد کلاسهای مشتق را با خصوصیات و روشهای جدیدی تعریف کنید.
- ساختار برنامه را بهبود میدهد: وراثت به شما کمک میکند تا برنامه را به صورت منطقی و منظم ساختاردهی کنید.
مثال کاربردی
فرض کنید میخواهید یک برنامه بنویسید که مشخصات موترهای مختلف را مدیریت کند. میتوانید یک کلاس `موتور` پایه تعریف کنید و سپس کلاسهای مشتق مانند `موتور_برقی` و `موتور_بنزینی` را بر اساس کلاس `موتور` تعریف کنید.
class موتور:
def __init__(self, نام, قیمت):
self.نام = نام
self.قیمت = قیمت
def نمایش_مشخصات(self):
print(f"نام: {self.نام}, قیمت: {self.قیمت}")
class موتور_برقی(موتور):
def __init__(self, نام, قیمت, ظرفیت_باتری):
super().__init__(نام, قیمت)
self.ظرفیت_باتری = ظرفیت_باتری
def نمایش_مشخصات(self):
super().نمایش_مشخصات()
print(f"ظرفیت باتری: {self.ظرفیت_باتری} کیلووات ساعت")
class موتور_بنزینی(موتور):
def __init__(self, نام, قیمت, حجم_موتور):
super().__init__(نام, قیمت)
self.حجم_موتور = حجم_موتور
def نمایش_مشخصات(self):
super().نمایش_مشخصات()
print(f"حجم موتور: {self.حجم_موتور} لیتر")
نتیجهگیری
وراثت یکی از مفاهیم مهم در برنامهنویسی شیگرا است که به ما اجازه میدهد کلاسهای مشتق را بر اساس کلاسهای پایه تعریف کنیم. با استفاده از وراثت، میتوانید کد تکراری را کاهش دهید، انعطافپذیری را افزایش دهید و ساختار برنامه را بهبود بخشید.
تمرین
یک برنامه بنویسید که مشخصات زنگهای تفریح در یک مکتب را مدیریت کند. کلاس پایه `زنگ_تفریح` را تعریف کنید و سپس کلاسهای مشتق مانند `زنگ_تفریح_ورزشی` و `زنگ_تفریح_هنری` را بر اساس کلاس `زنگ_تفریح` تعریف کنید.
یادگیری وراثت در پایتون میتواند به شما کمک کند تا برنامههای پیچیدهتری را با ساختار منطقی و منظم ایجاد کنید.
سوالات متداول
- وراثت در پایتون چیست؟
- چگونه میتوان یک کلاس مشتق را در پایتون تعریف کرد؟
- کلمه کلیدی super در پایتون چیست؟
پاسخ سوالات
- وراثت در پایتون یک مکانیزم است که به ما اجازه میدهد یک کلاس جدید را بر اساس یک کلاس موجود تعریف کنیم.
- برای تعریف یک کلاس مشتق در پایتون، کافی است نام کلاس مشتق را همراه با نام کلاس پایه در پرانتزها بنویسیم.
- کلمه کلیدی super در پایتون به ما اجازه میدهد به کلاس پایه دسترسی داشته باشیم و از خصوصیات و روشهای آن استفاده کنیم.