
وراثت در پایتون
در این بخش به بررسی وراثت در پایتون می پردازیم.
وراثت یا Inheritance در پایتون به معنی این است که یک کلاس جدید (کلاس فرزند) میتواند ویژگیها و رفتاری که در کلاس دیگری (کلاس پدر) تعریف شده است را به ارث ببرد و از آنها استفاده کند. به این ترتیب، کلاس فرزند به تعدادی از ویژگیها و رفتارهای کلاس پدر دسترسی دارد و میتواند آنها را بازنویسی (override) کند یا ویژگیها و رفتارهای جدیدی به آن اضافه کند.
استفاده از وراثت در پایتون میتواند کد را بهبود ببخشد و باعث کاهش تکرار و افزایش انعطاف پذیری شود. برای ارثبری در پایتون، کلاس فرزند باید از کلاس پدر به وسیله کلیدواژه class
ارثبری کند. به عنوان مثال:
در این مثال، کلاس Dog از کلاس Animal ارثبری میکند. کلاس Dog ویژگیهای name و age را از کلاس Animal به ارث میبرد و به آنها ویژگی breed را اضافه میکند. همچنین، رفتار make_sound را بازنویسی میکند و رفتار جدیدی را به آن اضافه میکند.
مثال برای وراثت در پایتون
میتوانید برای توضیح بیشتر به مثال زیر توجه کنید:
در این مثال، دو کلاس Dog و Cat از کلاس Animal به عنوان کلاس پدر به وسیله کلیدواژه class ارثبری کردهاند. همانطور که مشاهده میکنید، هر دو کلاس Dog و Cat ویژگیهای name و age را از کلاس Animal به ارث میبرند و به آنها ویژگیهای جدیدی مانند breed و color را اضافه میکنند. همچنین هر کلاس رفتار make_sound را بازنویسی میکند و رفتار جدیدی را به آن اضافه میکند.
همچنین، در پایتون میتوانید از چندین سطح وراثت نیز استفاده کنید. به عنوان مثال:
در این مثال، کلاس Mammal به عنوان کلاس میانی به کلاسهای Dog و Cat اضافه شده است. کلاس Mammal ویژگی جدیدی به نام feed_young_with_milk را به کلاسها اضافه میکند. در نتیجه، هر دو کلاس Dog و Cat این ویژگی را از کلاس Mammal به ارث میبرند. همچنین میتوانید مشاهده کنید که dog1 و cat1 هر دو رفتار make_sound را بازنویسی کردهاند، اما هر کدام به صورت متفاوت عمل میکنند.
وراثت چندگانه در پایتون
یک نکته دیگر مربوط به وراثت چندگانه (Multiple Inheritance) است. وراثت چندگانه به معنی وراثت همزمان از چندین کلاس است. در پایتون، میتوانید از وراثت چندگانه استفاده کنید، به این شکل که یک کلاس مشتق شده میتواند ویژگیها و رفتارهای چندین کلاس پدر را به ارث ببرد.
برای مثال، فرض کنید کلاسی به نام Flying
داریم که شامل ویژگیهایی مانند fly
و land
است. همچنین کلاسی به نام Swimming
داریم که شامل ویژگیهایی مانند swim
و dive
است.
در اینجا میتوانیم از وراثت چندگانه استفاده کنیم. کلاس Duck
میتواند هم از کلاس Flying
و هم از کلاس Swimming
به ارث ببرد، به این شکل:
در این مثال، کلاس Duck از هر دو کلاس Flying و Swimming به ارث برده است. به این شکل، شیء d میتواند از هر دو ویژگی پرواز و شنا استفاده کند.
بررسی مفهوم Polymorphism در پایتون
یکی دیگر از موارد مهم در وراثت، مفهوم پلیمورفیسم (Polymorphism) است. پلیمورفیسم به معنی قابلیت چندشکلی است. در واقع، با استفاده از پلیمورفیسم میتوانید به یک شیء با نوع یکسان، عملکردهای متفاوتی اختصاص دهید.
برای مثال، در مثال قبل با داشتن کلاسهای Dog
و Cat
، میتوانیم به هر دوی این شیءها به صورت متفاوتی اشاره کنیم، اما با استفاده از یک متد مشترک، به هر دوی آنها به صورت یکسان اشاره کنیم.
در این مثال، تابع make_animal_sound به عنوان یک تابع جداگانه ایجاد شده است که یک شیء از کلاس Dog یا Cat را به عنوان ورودی دریافت میکند. با استفاده از متد مشترک make_sound، متناظر با هر کدام از شیءها، صدا تولید میشود.
این قابلیت پلیمورفیسم، به شما اجازه میدهد تا با استفاده از ارثبری، کد خود را سادهتر و مدولارتر کنید و همچنین قابلیت توسعه و اصلاح آن را بهبود بخشید.
بررسی متد super() در وراثت
یکی از نکات مهم دیگر در وراثت، مفهوم super()
است. متد super()
به شما اجازه میدهد که به متدی در کلاس پدری خود اشاره کنید و آن را فراخوانی کنید.
برای مثال، فرض کنید که میخواهیم در کلاس Dog
متدی به نام make_sound
تعریف کنیم که به جای چاپ رشته “The dog barks.”، رشته “Woof!” را چاپ کند. اما به جای تکرار کد، میتوانیم از super()
برای فراخوانی متد make_sound
در کلاس پدری یعنی کلاس Animal
استفاده کنیم و پس از آن رشته “Woof!” را چاپ کنیم.
در این مثال، با استفاده از
super().make_sound()
، متد make_sound در کلاس پدری، یعنی کلاس Animal، فراخوانی شده است و پس از آن رشته “Woof!” چاپ شده است.استفاده از super()
، به شما امکان میدهد که به راحتی تغییراتی در متدهای پدری اعمال کنید، بدون اینکه کد خود را تکرار کنید.
وراثت در پایتون به شما اجازه میدهد که از کدهای تعریف شده در یک کلاس پدر، در کلاسهای فرزند آن استفاده کنید. با استفاده از وراثت، میتوانید کدهای تکراری را حذف کنید، کد خود را سادهتر بنویسید و از این طریق، کد خود را قابل توسعهتر کنید. همچنین، با استفاده از وراثت، میتوانید کلاسهای جدید را با ارثبری از کلاسهای قبلی، به راحتی تعریف کنید و تعداد خطوط کد را کاهش دهید.
آیا این مطلب برای شما مفید بود ؟
وظيفه سرمايه داران
و درود خدا بر او، فرمود: همانا خداى سبحان روزى فقراء را در اموال سرمايه داران قرار داده است، پس فقيرى گرسنه نمى ماند جز به كاميابى توانگران، و خداوند از آنان در باره گرسنگى گرسنگان خواهد پرسيد.
حکمت 328 نهج البلاغه