Как переопределить атрибут в дочернем классе, который используется в его родительском классе? - PullRequest
0 голосов
/ 16 февраля 2019
class Car():
    """A simple attempt to represent a car."""

    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def get_descriptive_name(self):
        long_name = str(self.year) + " " + self.make + " " + self.model
        return long_name.title()

class ElectricCar(Car):
    """Represent aspects of a car, specific to electric vehicles."""

    def __init__(self, make, model, year):
        """Initialize attributes of the parrent class."""

        super().__init__(make, model, year)


my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla.get_descriptive_name())

Как удалить атрибут year из class ElectricCar(Car)?Я хочу, чтобы атрибут year оставался в родительском классе class Car(), но был удален из дочернего класса.

1 Ответ

0 голосов
/ 16 февраля 2019

Да, вы можете, но это неправильно.если year не следует использовать в ElectricCar, то оно должно быть где-то в другом классе или объекте.это не правильно помещать что-то в родительский элемент и удалять это в дочернем элементе.но, между прочим, вы можете сделать это так:

class ElectricCar(Car):

    def __init__(self, make, model, year):
        super().__init__(make, model, year)
        del self.year

Обратите внимание, что удаление года увеличит AttributeError в get_descriptive_name.потому что нет года.

...