Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 119

Это отличный способ использовать код повторно. Когда вы применяете наследо-

вание, новый класс может автоматически использовать весь код старого класса

и при этом вам не нужно его копировать.

Вы определяете только то, что вам нужно добавить или изменить в новом клас-

се, и этот код переопределяет поведение старого класса. Оригинальный класс на-

зывается предком, суперклассом или базовым классом, новый класс называется

потомком, подклассом или классом-наследником. Эти термины в объектно-ориен-

тированном программировании взаимозаменяемы.

Давайте же что-нибудь унаследуем. Мы определим пустой класс, который

называется 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, что может привести

к кризису самоопределения. Посмотрим, что мы можем с этим сделать.

Перегрузка метода

Как вы только что увидели, новый класс наследует все, что находится в его классе-

предке. Далее вы увидите, как можно заменить, или перегрузить, родительские ме-