وراثت در کلاس های پایتون

  • مدرس: علی بیگدلی
  • تاریخ انتشار: Aug 24, 2020

وراثت یک راه برای به اشتراک گذاشتن قابلیت بین کلاس ها فراهم می کند.تصور کنید چند کلاس، Cat، Dog، Rabbitو غیره. اگر چه ممکن است برخی از آنها متفاوت باشد (تنها Dog ممکن است دارای متد bark (پارس کردن) باشد)، در سایر موارد احتمالا مشابه باشند (رنگ و نام ویژگی ها).این شباهت را می توان با ایجاد همه آنها از حیوانات سوپر کلاسیک که شامل قابلیت های مشترک است، بیان می شود.برای به ارث بردن یک کلاس از کلاس دیگر، پس از نام کلاس، نام ابر کلاس را در پرانتز قرار دهید.مثال:

class Animal: 
  def __init__(self, name, color):
    self.name = name
    self.color = color

class Cat(Animal):
  def purr(self):
    print("Purr...")
        
class Dog(Animal):
  def bark(self):
    print("Woof!")

fido = Dog("Fido", "brown")
print(fido.color)
fido.bark()

خروجی:

>>>
brown
Woof!
>>>

وراثت یک کلاس که از کلاس دیگری به ارث می برد، یک زیر کلاس نامیده می شود. یک کلاس که از آن به ارث برده می شود، سوپرکلاس نامیده می شود. اگر یک کلاس از یک دیگری با همان صفات یا روش به ارث برساند، آنها آنها را از بین می برد.

class Wolf: 
  def __init__(self, name, color):
    self.name = name
    self.color = color

  def bark(self):
    print("Grr...")

class Dog(Wolf):
  def bark(self):
    print("Woof")
        
husky = Dog("Max", "grey")
husky.bark()

خروجی:

>>>
Woof
>>>

میراث همچنین می تواند غیر مستقیم باشد. یک کلاس می تواند از دیگری به ارث برسد و آن کلاس می تواند از یک کلاس سوم به ارث برده شود. مثال:

class A:
  def method(self):
    print("A method")
    
class B(A):
  def another_method(self):
    print("B method")
    
class C(B):
  def third_method(self):
    print("C method")
    
c = C()
c.method()
c.another_method()
c.third_method()

خروجی:

>>>
A method
B method
C method
>>>

تابع فوق یک تابع مربوط به ارثی مفید است که به کلاس پدر و مادر اشاره دارد. این می تواند مورد استفاده قرار گیرد برای پیدا کردن روش با یک نام خاص در سوپر کلاس object. مثال:

class A:
  def spam(self):
    print(1)

class B(A):
  def spam(self):
    print(2)
    super().spam()
            
B().spam()

خروجی:

>>>
2
1    
>>>
ثبت دیدگاه
نام *
ایمیل*
دیدگاه *
3دیدگاه
  • sahar
    11 months, 3 weeks ago

    سلام من همین یه جلسه رو دیدم ولی عالی عالی عالی

  • محمد تفضلی
    2 years, 3 months ago

    دوره ی کاملا کاربردی وبسیار عالی بود چیزی که نظر منو جلب کرد برای شرکت در این دوره پروژه محور بودن اون بود خسته نباشید میگم به شما بابت ایجاد این دوره.

    • علی بیگدلی
      2 years, 3 months ago

      خواهش می کنم خوشحالیم که مورد پسند واقع شده