آموزش ارث بری یا وراثت در پایتون

ارث بری یا وراثت در پایتون

ارث‌بری یا Inheritance در پایتون به ما اجازه می دهد که یک کلاس با تمام متدها و ویژگی های یک کلاس دیگر تعریف کنیم. در مفهوم ارث‌بری دو کلاس والد و فرزند وجود دارد:

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

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

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

هر کلاسی می تواند یک کلاس والد باشد و نحوه ایجاد آن مانند ایجاد هر کلاس دیگری است.

مثال

یک کلاس با نام Person، با خصوصیات firstname و lastname و متد printname ایجاد کنید:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname

  def printname(self):
    print(self.firstname, self.lastname)

#Use the Person class to create an object, and then execute the printname method:

x = Person("John", "Doe")
x.printname()

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

برای ایجاد یک کلاس به عنوان فرزند، کلاس والد را به عنوان پارامتر به آن بدهید:

مثال

یک کلاس به نام Student ایجاد کنید که ویژگی ها و متدهای کلاس Person را به ارث می‌برد:

class Student(Person):
  pass

توجه: زمانی که نمی خواهید هیچ ویژگی یا متدی به کلاس اضافه کنید از دستور pass استفاده کنید.

اکنون کلاس Student دارای همان ویژگی ها و متدهای کلاس Person است.

مثال

x = Student("Mike", "Olsen")
x.printname()

اضافه کردن تابع __init__()

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

می خواهیم تابع __init__() را به کلاس فرزند اضافه کنیم. تابع __init__() هر بار که از کلاس برای ایجاد یک شی جدید استفاده می‌کنیم، فراخوانی می‌شود.

مثال

class Student(Person):
  def __init__(self, fname, lname):
    #add properties etc.

با اضافه شدن تابع __init__() به کلاس، دیگر تابع __init__() در کلاس والد اجرا نمی‌شود.

برای حفظ تابع __init__() والد، باید خودمان آن را در فرزند فراخوانی کنیم:

مثال

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

با اینکار هم تابع __init__() خودمان را اضافه کردیم و هم ارث بری آن را از والد حفظ کردیم.

استفاده از تابع super()

با استفاده از تابع super()، لازم نیست از خود نام کلاس والد استفاده کنید:

مثال

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

تابع super() به کلاس والد فعلی اشاره می‌کند و به همه متدها و ویژگی های آن دسترسی دارد.

افزودن ویژگی

یک property به نام graduationyear به کلاس Student اضافه کنید:

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

یک پارامتر به نام year اضافه کنید و سال درست را هنگام ایجاد اشیاء وارد نمایید:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

x = Student("Mike", "Olsen", 2019)

افزودن متد

مثال

یک متد welcome به کلاس Student اضافه کنید:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year

  def welcome(self):
    print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

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

مجموعهآموزش پایتون از صفر(23 پست)
1.پایتون چیست؟ مقدمه پایتون10 ماه قبل2.برنامه نویسی پایتون را چطور شروع کنیم؟10 ماه قبل3.آموزش سینتکس (نحوه نوشتن) پایتون10 ماه قبل4.آموزش متغیرهای پایتون10 ماه قبل5.آموزش انواع داده در پایتون10 ماه قبل6.آموزش اعداد در پایتون10 ماه قبل7.آموزش Casting (تبدیل نوع داده) در پایتون10 ماه قبل8.آموزش رشته در پایتون10 ماه قبل9.آموزش بولین یا Boolean در پایتون10 ماه قبل10.آموزش عملگرهای پایتون10 ماه قبل11.آموزش لیست در پایتون10 ماه قبل12.آموزش تاپل یا چندتایی در پایتون9 ماه قبل13.آموزش Set یا مجموعه در پایتون8 ماه قبل14.آموزش نوع داده دیکشنری در پایتون8 ماه قبل15.آموزش شرط if ... else در پایتون8 ماه قبل16.آموزش حلقه while در پایتون8 ماه قبل17.آموزش حلقه for در پایتون8 ماه قبل18.آموزش توابع در پایتون8 ماه قبل19.آموزش توابع Lambda (لامبدا) در پایتون8 ماه قبل20.آموزش آرایه در پایتون7 ماه قبل21.آموزش کلاس و Object در پایتون7 ماه قبل22.آموزش ارث بری یا وراثت در پایتون7 ماه قبل23.آموزش تکرارگر یا iterator در پایتون7 ماه قبل

کامنت ها