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

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

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