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
نکات مهم:
اگر متدی در کلاس فرزند با نام مشابه متدی در کلاس والد تعریف شود، متد کلاس فرزند متد کلاس والد را جایگزین میکند.
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام