وراثت چیست؟

وراثت یا ارث بری یک ویژگی از پایتون است که در کلاس ها انجام میشود.

از طریق وراثت میتوانیم یک کلاس ایجاد کنیم که متد ها و ویژگی های کلی و پایه ای داشته باشد.(به این نوع کلاس ها والد گفته میشود.)

و با ایجاد کلاسی دیگر از برخی ویژگی های کلاس پایه ارث بری کنیم و آنهارا به کلاس جدید بدهیم.(به این نوع کلاس ها فرزند گفته میشود.)

ایجاد کلاس والد

همانطور که نحوه ایجاد یک کلاس را در درس قبل دیدید در این قسمت هم با دانش قبلی خود یک کلاس معمولی میسازیم بعنوان کلاس والد و در ادامه از نام آن استفاده میکنیم.

class Cars:
    def __init__(self, brand, score):
        self.brand = brand
        self.score = score

    def printcar(self):
        print(self.brand, self.score)

x = Cars("BMW", "97")
x.printcar()

ایجاد کلاس فرزند

در این کلاس لزومی ندارد ویژگی هایی که نیاز داریم را دوباره بنویسیم. میتوانیم با نام بردن کلاس cars از ویژگی های آن استفاده کنیم.

class motorcycle(cars):
  pass

اکنون ما یک کلاس به نام motorcycle داریم که همه ی ویژگی های کلاس cars را دارد و در این کلاس ما میتوانیم از برخی از این ویژگی ها یا حتی همه ی آنها استفاده کنیم.

 

یادآوری: دستور pass برای کلاس های خالی به کار میرود تا خطایی نداشته باشیم

 

تابع __init__()

در کلاسهای فرزند هم میتوانید ازاین تابع استفاده کنید. به مثال زیر توجه کنید.

class motorcycle(cars):
  def __init__(self, brand, score):
    cars.__init__(self, brand, score)

در این کلاسها باید از نام کلاس پایه استفاده کنید.

تابع super()

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

class motorcycle(cars):
  def __init__(self, brand, score):
    super().__init__(self, brand, score)

افزودن ویژگی

شما میتوانید افزون بر ویژگی هایی که در کلاس جدید به ارث بردید ویژگی های خود را اضافه کنید و از آنها استفاده کنید.

class motorcycle(cars):
  def __init__(self, brand, score):
    super().__init__(self, brand, score)
      self.country= coun

در مثال بالا coun یک متغیر است که در هنگام پرینت گرفتن یا برگرداندن به کلاس وارد میکنیم.

x = motorcycle("honda", 30, "japan")

افزودن متد

برای اضافه کردن متد به کلاس جدید خود میتوانیم مانند درس های قبل عمل کنیم.

class motorcycle(cars):
  def __init__(self, brand, score):
    super().__init__(self, brand, score)
      def report(self):
    print("the", self.brand , "is best car with", self.score)

خلاصه درس

  • میتوان کلاس هایی ایجاد کرد که ویژگی یک کلاس دیگر را داشته باشند.
  • به کلاس های جدید میتوان ویژگی هایی اضافه کرد.
  • میتوان در کلاس ها متد هایی اجرا کرد.

تمرین

یک کلاس بنام names ایجاد کنید که از کلاس والد users ارث بری کند.

class
مشاهده پاسخ
توسعه دهندگان
علیرضا چمنی