امروز میپردازیم به وراثت در پایتون، پایتون یک زبان برنامهنویسی شیگرا (Object-oriented programming) میباشد. یکی از مفاهیم اصلی در زبانهای برنامهنویسی شیگرا، مفهوم وراثت (Inheritance) است. وراثت این امکان را به شما میدهد تا بتوانید کلاسی را تعریف کنید که تمام متدها و ویژگیهایش را از کلاس دیگری به ارث میبرد.
از مزایای استفاده از وراثت در پایتون و به طور کلی در کدنویسی میتوان به موارد زیر اشاره کرد:
میتوان ویژگیهای یک کلاس را به کلاسهای دیگر پاس داد. همچنین این امکان را بوجود میآورد که ویژگیهای بیشتری را به یک کلاس اضافه کنید بدون اینکه آن را تغییر دهید.
با استفاده از وراثت قابلیت استفاده مجدد از یک کد فراهم میشود و دیگر نیازی نیست دوباره همان کد را نوشت و از تکرار کدنویسی جلوگیری میکند، که همین امر باعث سرعت بیشتر در کدنویسی و اتلاف وقت کمتر میشود.
وراثت ساختاری ساده و قابل فهم دارد و به برنامهنویسان در نوشتن برنامهها کمک بسیاری میکند.
پیشنهاد می کنیم برای درک بهتر مفهوم وراثت در پایتون با ما تا انتهای مقاله همراه باشید.
کلاس والد (parent) کلاسی است که کلاسهای دیگر ویژگیهایشان را از آن به ارث میبرند و کلاس فرزند (child) کلاسی است که از کلاس والد ارثبری میکند.
شکل زیر به خوبی مفهوم وراثت را نشان میدهد:
در این تصویر یک نمونهی ساده از ساختار وراثت نمایش داده شده است. همه حیوانات نفس میکشند و هر دو کلاس Cat و Bird دارای این ویژگی هستند که از کلاس Animal ارثبری میکنند. همچنین هرکدام از این کلاسها دارای ویژگیهای مختص به خود هستند که در کلاس خودشان تعریف شده است.
هر کلاسی میتواند کلاس والد باشد، فقط کافیست یک کلاس ایجاد کنیم:
class Animal: def breath(name): print(f'{name} is breathing.') Animal.breath('cat') ---------------------- >>> cat is breathing.
حالا برای پیادهسازی تصویر بالا کافیست کد زیر را در پایتون بنویسیم:
class Animal: def breath(self): print(f'{self.__class__.__name__} is breathing.') class Cat(Animal): def run(self): print(f'{self.__class__.__name__} is running.') class Bird(Animal): def fly(self): print(f'{self.__class__.__name__} is flying.') cat = Cat() bird = Bird() cat.breath() cat.run() print('------------------') bird.breath() bird.fly() ---------------------- >>> Cat is breathing. Cat is running. ------------------ Bird is breathing. Bird is flying.
همانطور که در کد بالا مشاهده میکنید، با فراخوانی تابع مورد نظر میتوانیم از ویژگیهای تعریف شده در کلاس استفاده کرده و خروجی را بدست آوریم.