вать новый класс. Изменим способ работы метода exclaim() для класса Yugo:
>>> class Car():
... def exclaim(self):
... print("I'm a Car!")
...
>>> class Yugo(Car):
... def exclaim(self):
... print("I'm a Yugo! Much like a Car, but more Yugo-ish.")
...
Теперь создадим объекты этих классов:
>>> give_me_a_car = Car()
>>> give_me_a_yugo = Yugo()
162
Глава 6. Ой-ой-ой: объекты и классы
Что они говорят?
>>> give_me_a_car.exclaim()
I'm a Car!
>>> give_me_a_yugo.exclaim()
I'm a Yugo! Much like a Car, but more Yugo-ish.
В этих примерах мы перегрузили метод exclaim(). Перегрузить можно любые
методы, включая __init__(). Рассмотрим другой пример, который использует наш
более старый класс Person. Создадим подклассы, которые представляют докторов
(MDPerson) и адвокатов (JDPerson):
>>> class Person():
... def __init__(self, name):
... self.name = name
...
>>> class MDPerson(Person):
... def __init__(self, name):
... self.name = "Doctor " + name
...
>>> class JDPerson(Person):
... def __init__(self, name):
... self.name = name + ", Esquire"
...
В этих случаях метод инициализации __init__() принимает те же аргументы,
что и родительский класс Person, но внутри объекта сохраняет значение переменной
name разными способами:
>>> person = Person('Fudd')
>>> doctor = MDPerson('Fudd')
>>> lawyer = JDPerson('Fudd')
>>> print(person.name)
Fudd
>>> print(doctor.name)
Doctor Fudd
>>> print(lawyer.name)
Fudd, Esquire
Добавление метода
В класс-потомок можно также добавить метод, которого не было в родительском