Python – وراثت (Inheritance)

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

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

  • کلاس والد: کلاسی که از آن وراثت گرفته می‌شود (کلاس پایه).
  • کلاس فرزند: کلاسی که وراثت را از کلاس دیگر به دست می‌آورد (کلاس مشتق).

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

هر کلاسی می‌تواند به عنوان کلاس والد تعریف شود. به‌سادگی از class استفاده می‌کنید.

مثال:

ایجاد یک کلاس به نام 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)

# ایجاد شیء از کلاس Person
x = Person("John", "Doe")
x.printname()  # Output: John Doe

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

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

مثال:

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

class Student(Person):
    pass

# ایجاد شیء از کلاس Student و استفاده از متد وراثت گرفته‌شده
x = Student("Mike", "Olsen")
x.printname()  # Output: Mike Olsen

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

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

مثال:

اضافه کردن تابع __init__() به کلاس Student:

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

استفاده از super() برای فراخوانی تابع __init__() والد:

استفاده از تابع super() به طور خودکار متدها و ویژگی‌ها را از کلاس والد به ارث می‌برد:

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

اضافه کردن ویژگی‌ها به کلاس فرزند

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

مثال:

اضافه کردن ویژگی graduationyear:

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

x = Student("Mike", "Olsen", 2019)
print(x.graduationyear)  # Output: 2019

اضافه کردن متدها به کلاس فرزند

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

مثال:

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

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

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

x = Student("Mike", "Olsen", 2019)
x.welcome()  # Output: Welcome Mike Olsen to the class of 2019

نکات مهم:

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

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - رویدادها (Events)

JavaScript – رویدادها (Events)

رویدادهای HTML رویدادها در HTML، “اتفاقاتی” هستند که برای عناصر HTML رخ می‌دهند. این اتفاقات می‌توانند ناشی از کار...

بیشتر بخوانید
JavaScript - سازنده‌های شیء (Object Constructors)

JavaScript – سازنده‌های شیء (Object Constructors)

ساخت آبجکت با تابع سازنده (Object Constructor Function) برای ساخت چندین آبجکت مشابه، از تابع سازنده استفاده می‌شود. این...

بیشتر بخوانید
JavaScript - نمایش شیء (Object Display)

JavaScript – نمایش شیء (Object Display)

نحوه نمایش آبجکت‌ها در جاوااسکریپت هنگام نمایش یک آبجکت جاوااسکریپت به صورت مستقیم، خروجی معمولاً به شکل [object Object]...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.