<Python Cra sh Course - Eri c Matthes> Нам действительно нужна здесь функция super (), как показано автором? - PullRequest
1 голос
/ 29 марта 2020

Новый OOP в Python. Проходил главу о классах и наследовании в книге Python Cra sh Курс по Eri c Matthes. В следующем отрывке из раздела наследование главы ...:

enter image description here

... автор:

  1. сначала определяет новый метод __init __ () для дочернего класса ElectricCar (который является подклассом для Car согласно определению) и который принимает те же параметры, что и его родительский __init__() method
  2. В методе ElectricCar __init__() автор использовал super () для доступа к методу __init__() суперкласса Car.
  3. Затем автор инициирует my_tesla объект, который является экземпляром дочернего класса ElectricCar и печатает возвращаемое значение из метода get_descriptive_name() суперкласса для генерации вывода: enter image description here

Мой вопрос было ли необходимо 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())

... чтобы получить тот же вывод?

...