Python Успадкування
Python Успадкування
Успадкування дозволяє нам визначити клас, який успадковує всі методи та властивості від іншого класу.
Батьківський клас – це клас, який успадковується, також називається базовим класом.
Дочірній клас – це клас, який успадковує інший клас, також називається похідним класом.
Створити батьківський клас
Будь-який клас може бути батьківським, тому синтаксис такий самий, як і для будь-якого іншого класу:
Приклад
Створіть клас під назвою 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, щоб створити об’єкт, а потім виконайте метод printname:
x = Person("John", "Doe")
x.printname()
Спробуйте самі »
Створити дочірній клас
Щоб створити клас, який успадковує функції від іншого класу, надішліть батьківський клас як параметр під час створення дочірнього класу:
Приклад
Створіть клас під назвою Student
, який успадкує властивості та методи від класу Person
:
class Student(Person):
pass
Примітка: Використовуйте ключове слово pass
, якщо ви не хочете додавати будь-які інші властивості чи методи до класу.
Тепер клас Student має ті самі властивості та методи, що й клас Person.
Приклад
Скористайтеся класом Student
, щоб створити об’єкт, а потім виконайте метод printname
:
x = Student("Mike", "Olsen")
x.printname()
Спробуйте самі »
Додати функцію __init__()
Наразі ми створили дочірній клас, який успадковує властивості та методи від батьківського.
Ми хочемо додати функцію __init__()
до дочірнього класу (замість ключового слова pass
).
Примітка: Функція __init__()
викликається автоматично кожного разу, коли клас використовується для створення нового об’єкта.
Приклад
Додайте функцію __init__()
до класу Student
:
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
Коли ви додаєте функцію __init__()
, дочірній клас більше не успадковуватиме батьківську функцію __init__()
.
Примітка: Функція дочірнього __init__()
перевизначає успадкування __init__()
батьківського елемента функції.
Щоб зберегти успадкування батьківської функції __init__()
, додайте виклик батьківської функції __init__()
:
Приклад
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
Спробуйте самі »
Тепер ми успішно додали функцію __init__() і зберегли успадкування батьківського класу, і ми готові додати функціональність у функцію __init__()
.
Використання функції super()
Python також має функцію super()
, яка змусить дочірній клас успадкувати всі методи та властивості свого батьківського:
Приклад
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
Спробуйте самі »
Використовуючи функцію super()
, вам не потрібно використовувати ім’я батьківського елемента, він автоматично успадковує методи та властивості свого батьківського елемента.
Додати властивості
Приклад
Додайте властивість під назвою graduationyear
до класу Student
:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear = 2019
Спробуйте самі »
У наведеному нижче прикладі рік 2019
має бути змінною та передаватися в клас Student
під час створення Student об’єктів. Для цього додайте ще один параметр у функцію __init__():
Приклад
Додайте параметр 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)
Спробуйте самі »
Якщо ви додаєте метод до дочірнього класу з тим же ім’ям, що й функція в батьківському класі, успадкування батьківського методу буде перевизначено.