Ингеритация в Python
- Предыдущая страница Классы/Объекты Python
- Следующая страница Итерации в Python
Ингеритация в Python
Наследование позволяет нам определять классы, которые наследуют все методы и атрибуты другого класса.
Базовый классЭто класс, который наследуется, также известный как базовый класс.
Дочерний классЭто класс, который наследуется от другого класса, также известный как производный класс.
Создание базового класса
Любой класс может быть базовым классом, поэтому синтаксис создания аналогичен созданию любого другого класса:
Экземпляр
Создать класс Person, который содержит атрибуты firstname и lastname, а также метод printname:
class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname self.firstname = fname self.lastname = lname def printname(self): print(self.firstname, self.lastname) Используйте класс Student для создания объекта и выполнения метода printname:
# Используйте Person для создания объекта и выполнения метода printname:
x = Person("Bill", "Gates")
Экземпляр
Создание подкласса
class Student(Person): __init__()
# Добавление свойств и т.д.Чтобы создать класс, наследующий функции от другого класса, передайте родительский класс в качестве параметра при создании подкласса: __init__()
Создайте класс Student, который наследует свойства и методы класса Person:
Если вы не хотите добавлять какие-либо другие свойства или методы к этому классу, используйте
Экземпляр
Ключевое слово.
Теперь класс Student имеет такие же свойства и методы, как и класс Person. Используйте класс Student для создания объекта и выполнения метода printname:
x = Student("Elon", "Musk")
x.printname()
добавить функцию __init__() до сих пор мы создали подкласс, который наследует свойства и методы родительского класса.
мы хотим добавить __init__()
Функция добавлена к подклассу (а не
# Добавление свойств и т.д.pass
Экземпляр
Ключевое слово).
class Student(Person): def __init__(self, fname, lname): Каждый раз, когда используется класс для создания нового объекта, автоматически вызывается функция __init__()
Добавить функцию __init__() для класса Student:
# Добавление свойств и т.д.Когда вы добавляете функцию __init__(), подкласс больше не наследует функцию __init__() родителя.
Комментарий:
Экземпляр
class Student(Person): def __init__(self, fname, lname): функция __init__() подкласса перегружает наследование функции __init__() родителя.
Если нужно сохранить наследование функции __init__() родителя, добавьте вызов функции __init__() родителя:
Person.__init__(self, fname, lname)
Теперь, уже успешно добавили функцию __init__() и сохранили наследование суперкласса, мы готовы добавить функциональность в функцию __init__() с помощью функции, она позволяет подклассу наследовать все методы и свойства от суперкласса:
использование функции super()
Экземпляр
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname)
Python также имеет с помощью функции, она позволяет подклассу наследовать все методы и свойства от суперкласса:
super()
добавить функцию свойств, вам не нужно использовать имя родительского элемента, он автоматически наследует методы и свойства от родительского элемента.
Экземпляр
Добавить имя graduationyear
добавить свойства Student
класс:
class Student(Person): def __init__(self, fname, lname): super().__init__(fname, lname) self.graduationyear = 2019
В этом примере 2019 год должен быть переменной, и его нужно передать в класс Student при создании объекта student. Для этого добавьте еще один параметр в функцию __init__():
Экземпляр
добавить год
параметры, и передайте правильный год при создании объекта:
class Student(Person): def __init__(self, fname, lname, год) super().__init__(fname, lname) self.graduationyear = year x = Student("Elon", "Musk", 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)
Совет:Если вы добавляете метод с именем функции, совпадающим с функцией в родительском классе, в подклассе, то метод перезаписывает родительский метод.
- Предыдущая страница Классы/Объекты Python
- Следующая страница Итерации в Python