Python ';儿童班';对象没有属性';属性名称';

Python ';儿童班';对象没有属性';属性名称';,python,python-3.x,class,attributes,super,Python,Python 3.x,Class,Attributes,Super,我无法检索仅由继承的子类创建的变量的值。 此外,在子类的init中更改从父类继承的变量的值也不适用 下面是父类: class Car(): def __init__(self, make, model, year): self.make = make self.model = model self.year = year self.odometer_reading = 0 def __str__(self):

我无法检索仅由继承的子类创建的变量的值。 此外,在子类的init中更改从父类继承的变量的值也不适用

下面是父类:

class Car():

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

    def __str__(self):
        return str(self.__class__) + ": " + str(self.__dict__)

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

    def read_odometer(self):
        print("This car has " + str(self.odometer_reading) + " miles on it.")

    def update_odometer(self, mileage):
        if mileage >= self.odometer_reading:
            self.odometer_reading = mileage
        else:
            print("You can't roll back an odometer!")

    def increment_odometer(self, miles):
        self.odometer_reading += miles
下面是儿童班:

class ElectricCar(Car):

    def __init___(self, make, model, year):
        super(ElectricCar, self).__init__(make, model, year)
        self.odometer_reading = 100
        self.battery_size = 70

    def __str__(self):
        return str(self.__class__) + ": " + str(self.__dict__)

    def describe_battery(self):
        print(self.battery_size)
现在,如果我尝试运行以下代码:

my_tesla = ElectricCar('tesla', 'model s', 2016)
print(my_tesla)
print(my_tesla.describe_battery())
我得到以下例外情况:

:
{'make':'tesla','model':'model s','year':2016,'里程表读数':0}
AttributeError:“电动车”对象没有“电池大小”属性
我有一个oddmeter\u读取变量,它在父类中的值是0。 我从儿童班改为100班,但不适用。 此外,仅在子类中设置的变量
battery_size
,不会在init中创建


有什么问题吗?我遗漏了什么?

你的
电动汽车
课上有一个打字错误。您使用3个下划线而不是2个下划线定义了方法
\uuuuuu init\uuuuuuuu
,因此在创建新实例时不会调用该方法

如果您将
电动车
课程更改为:

class ElectricCar(Car):

    def __init__(self, make, model, year): #Note the two underscores
        super(ElectricCar, self).__init__(make, model, year)
        self.odometer_reading = 100
        self.battery_size = 70

    def __str__(self):
        return str(self.__class__) + ": " + str(self.__dict__)

    def describe_battery(self):
        print(self.battery_size)
然后这将是输出:

<class '__main__.ElectricCar'>: {'make': 'tesla', 'model': 'model s', 'year': 2016, 
'odometer_reading': 100, 'battery_size': 70}
70
None
:{'make':'tesla','model':'model's','year':2016年,
“里程表读数”:100,“电池大小”:70}
70
没有一个

您编写的
\uuuuu init\uuuuu
在右侧有三个下划线,因此您没有“修补”构造函数。@WillemVanOnsem Thk!!!!我会更加注意输入错误。感谢上传完整代码。我会更加注意打字错误。