Python ';儿童班';对象没有属性';属性名称';
我无法检索仅由继承的子类创建的变量的值。 此外,在子类的init中更改从父类继承的变量的值也不适用 下面是父类: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):
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!!!!我会更加注意输入错误。感谢上传完整代码。我会更加注意打字错误。