вание, новый класс может автоматически использовать весь код старого класса
и при этом вам не нужно его копировать.
Вы определяете только то, что вам нужно добавить или изменить в новом клас-
се, и этот код переопределяет поведение старого класса. Оригинальный класс на-
зывается предком, суперклассом или базовым классом, новый класс называется
потомком, подклассом или классом-наследником. Эти термины в объектно-ориен-
тированном программировании взаимозаменяемы.
Давайте же что-нибудь унаследуем. Мы определим пустой класс, который
называется Car. Далее определим подкласс класса Car, который называется Yugo.
Вы определяете подкласс с помощью все того же ключевого слова class, но ука-
зывая внутри скобок имя родительского класса (class Yugo(Car), как показано
ниже):
>>> class Car():
... pass
...
>>> class Yugo(Car):
... pass
...
Далее создадим объекты каждого класса:
>>> give_me_a_car = Car()
>>> give_me_a_yugo = Yugo()
Перегрузка метода
161
Класс-потомок является уточненной версией класса-предка; если говорить
в терминах объектно-ориентированных языков, Yugo является Car. Объект с именем
give_me_a_yugo является экземпляром класса Yugo, но он также наследует все то, что
может делать класс Car. В нашем случае классы Car и Yugo полезны как мертвому
припарки, поэтому попробуем указать их новые определения, которые действи-
тельно могут что-то сделать:
>>> class Car():
... def exclaim(self):
... print("I'm a Car!")
...
>>> class Yugo(Car):
... pass
...
Наконец, создадим по одному объекту каждого класса и вызовем их методы exclaim:
>>> give_me_a_car = Car()
>>> give_me_a_yugo = Yugo()
>>> give_me_a_car.exclaim()
I'm a Car!
>>> give_me_a_yugo.exclaim()
I'm a Car!
Не сделав ничего особенного, класс Yugo унаследовал метод exclaim() класса Car.
Фактически класс Yugo говорит, что он является классом Car, что может привести
к кризису самоопределения. Посмотрим, что мы можем с этим сделать.
Перегрузка метода
Как вы только что увидели, новый класс наследует все, что находится в его классе-
предке. Далее вы увидите, как можно заменить, или перегрузить, родительские ме-