# Первый шаг к ООП в Python

Если вам нужен ООП, скорее всего, вам понадобится наследование. Прежде чем мы перейдем к наследованию, давайте обсудим, КОГДА нам следует использовать наследование.

Отношения «Есть-А»

  • Собака - животное
  • Автомобиль – это транспортное средство
  • Квадрат – это фигура

Нам следует использовать наследование только в том случае, если существует связь Is-A, как в примерах выше.

  • Собака – животное. Более конкретноеживотное. Таким образом, дочерний класс Dog наследуется от родительского класса Animal.
  • Автомобиль – это транспортное средство. Более специфическоетранспортное средство. Таким образом, дочерний класс Car наследуется от родительского класса Vehicle.
  • Квадрат – это фигура. Более конкретная форма. Таким образом, дочерний класс Square наследуется от родительского класса Shape.

Как запрограммировать наследование

# this is the parent class
class Animal:
  pass

# this is the child class
class Dog(Animal):
  pass

Здесь мы сначала создаем класс Animal (это родительский класс).

Затем мы создаем дочерний класс Dog и передаем родительский класс Animal в круглых скобках после определения класса. Это означает, что Dog наследуется от Animal.

Наследование методов

Когда дочерний класс наследует родительский класс, все методы родительского класса передаются дочернему классу.

# this is the parent class
class Animal:
  def talk(self):
    print('I am an animal')

class Dog(Animal):
  pass

dog = Dog()
dog.talk()    # I am an animal

Здесь мы создаем родительский класс Animal с помощью простого метода talk.

Далее мы создаем дочерний класс Dog, который наследуется от Animal. Каждый метод из Animal будет передан в Dog. Вот почему мы можем вызвать метод talk внутри объекта Dog.

Переопределение унаследованных методов

Когда дочерний класс наследует родительский класс, он наследует все его методы. ЕСЛИ — дочерний класс переопределяет его.

# this is the parent class
class Animal:
  def talk(self):
    print('I am an animal')

  def hello(self)…