Ингеритация в 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)

Запуск примера

Совет:Если вы добавляете метод с именем функции, совпадающим с функцией в родительском классе, в подклассе, то метод перезаписывает родительский метод.