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("Щипунов", "Андрей")
x.printname()
Попробуйте сами »
Создать дочерний класс
Чтобы создать класс, наследующий функциональность от другого класса, отправьте родительский класс в качестве параметра при создании дочернего класса:
Пример
Создайте класс Student
, который унаследует свойства и методы класса Person:
class Student(Person):
pass
Примечание: Используйте ключевое pass
если вы не хотите добавлять в класс какие-либо другие свойства или методы.
Теперь класс Student имеет те же свойства и методы, что и класс Person.
Пример
Используйте класс Student
для создания объекта, а затем выполните метод printname:
x = Student("Щипунова", "Татьяна")
x.printname()
Попробуйте сами »
Добавьте функцию __init__()
Итак, мы создали дочерний класс, который наследует свойства и методы своего родителя.
Мы хотим добавить функцию __init__()
в дочерний класс (вместо ключевого слова pass
).
Примечание: Функция __init__()
вызывается автоматически каждый раз, когда класс используется для создания нового объекта.
Пример
Добавьте функцию __init__()
в класс Student:
class Student(Person):
def __init__(self, fname, lname):
#добавление свойств и т.д.
Когда вы добавляете функцию __init__()
function, дочерний класс больше не будет наследовать функцию __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()
вам не нужно использовать имя родительского элемента, он автоматически унаследует методы и свойства от своего родителя.
Добавить свойства
Пример
Добавьте в класс Student
свойство под названием
graduationyear
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("Щипунова", "Татьяна", 2019)
Попробуйте сами »
Добавить методы
Пример
Добавьте метод welcome
в класс
Student
:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
def welcome(self):
print("Добро пожаловать",
self.firstname, self.lastname, "в класс", self.graduationyear)
Попробуйте сами »
Если вы добавите в дочерний класс метод с тем же именем, что и у функции в родительском классе, наследование родительского метода будет переопределено.