وراثت (Inheritance) در پایتون چیست؟
وراثت یکی از اصول مهم برنامهنویسی شیگرا است که به شما اجازه میدهد یک کلاس جدید (کلاس فرزند یا subclass) بسازید که ویژگیها و رفتارهای یک کلاس دیگر (کلاس والد یا superclass) را به ارث ببرد و در عین حال بتواند قابلیتهای جدید اضافه کند یا رفتارهای والد را تغییر دهد.
چرا وراثت مهم است؟
وراثت به شما امکان میدهد کدهای خود را بازاستفاده (reuse) کنید، ساختار تمیزتر و قابل نگهداریتر بسازید، و سلسله مراتب مفهومی مدلهای دنیای واقعی را به شکل کلاسی در برنامه نمایش دهید.
ساختار کلی وراثت در پایتون
class ParentClass:
# ویژگیها و متدهای کلاس والد
pass
class ChildClass(ParentClass):
# این کلاس، کلاس والد را به ارث میبرد
pass
مثال ساده از وراثت
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
return "Some sound"
class Dog(Animal):
def speak(self):
return "Woof!"
class Cat(Animal):
def speak(self):
return "Meow!"
dog = Dog("Buddy")
cat = Cat("Kitty")
print(dog.name) # خروجی: Buddy
print(dog.speak()) # خروجی: Woof!
print(cat.name) # خروجی: Kitty
print(cat.speak()) # خروجی: Meow!
در این مثال:
- کلاس
Animal
والد است و ویژگیname
و متدی به نامspeak
دارد. - کلاسهای
Dog
وCat
ازAnimal
ارث میبرند و متدspeak
را به روش خودشان بازتعریف (override) میکنند.
مزایای وراثت
- کد کمتر و خواناتر: با استفاده از وراثت میتوانید کدهای تکراری را حذف کنید.
- سازماندهی بهتر: سلسله مراتب کلاسها مدلسازی منطقیتر و قابل فهمتری ایجاد میکند.
- قابلیت گسترش: میتوانید کلاسهای جدید بسازید که رفتارهای پایه را حفظ کنند و در عین حال قابلیتهای جدید اضافه کنند.
وراثت چندگانه
پایتون اجازه میدهد یک کلاس از چند کلاس والد به طور همزمان ارث ببرد:
class Flyer:
def fly(self):
return "I can fly!"
class Swimmer:
def swim(self):
return "I can swim!"
class Duck(Flyer, Swimmer):
pass
d = Duck()
print(d.fly()) # خروجی: I can fly!
print(d.swim()) # خروجی: I can swim!
وراثت ابزاری قدرتمند است که اگر درست استفاده شود، کد شما را مرتبتر، انعطافپذیرتر و نگهداریپذیرتر میکند.