Новый OOP в Python. Проходил главу о классах и наследовании в книге Python Cra sh Курс по Eri c Matthes. В следующем отрывке из раздела наследование главы ...:
... автор:
- сначала определяет новый метод __init __ () для дочернего класса ElectricCar (который является подклассом для Car согласно определению) и который принимает те же параметры, что и его родительский
__init__()
method - В методе ElectricCar
__init__()
автор использовал super () для доступа к методу __init__()
суперкласса Car. - Затем автор инициирует my_tesla объект, который является экземпляром дочернего класса ElectricCar и печатает возвращаемое значение из метода
get_descriptive_name()
суперкласса для генерации вывода:
Мой вопрос было ли необходимо go через все эти обручи для достижения этой цели? Когда он мог просто полагаться на неявное наследование по умолчанию как таковое ...
#!/usr/bin/python3
class Car(object):
"""A simple attempt to represent a car."""
def __init__(self, manufacturer, model, year):
"""Initialize attributes to describe a car."""
self.manufacturer = manufacturer
self.model = model
self.year = year
self.odometer_reading = 0
def get_descriptive_name(self):
"""Return a neatly formatted descriptive name."""
long_name = f"{self.year} {self.manufacturer} {self.model}"
return long_name.title()
.
.
.
class ElectricCar(Car):
"""Represent aspects of a car, specific to electric vehicles."""
pass
my_tesla = ElectricCar('tesla', 'model s', 2019)
print(my_tesla.get_descriptive_name())
... чтобы получить тот же вывод?