- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我无法检索仅由继承的子类创建的变量的值。另外,在子类的 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())
我收到以下异常:
<class '__main__.ElectricCar'>:
{'make': 'tesla', 'model': 'model s', 'year': 2016, 'odometer_reading': 0}
AttributeError: 'ElectricCar' object has no attribute 'battery_size'
我有一个 oddmeter_reading 变量,其父类中的值为 0。我从child class改成100,但是不适用。另外,变量battery_size
仅在子类中设置,不会在init中创建。
有什么问题吗?我错过了什么?
最佳答案
您的 ElectricCar
类中存在拼写错误。您使用 3 个下划线而不是两个下划线定义了方法 __init___
,因此在创建新实例时不会调用该方法。
如果您将 ElectricCar
类更改为:
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
关于python - “子类”对象没有属性 'attribute_name',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53238824/
对于包含列 :first_name 和 :last_name 的用户模型,编写 full_name 方法的最佳方式是什么。两者似乎都有效。 class User < ActiveRecord::Bas
我无法检索仅由继承的子类创建的变量的值。另外,在子类的 init 中更改从父类继承的变量的值也不适用。 这是父类: class Car(): def __init__(self, make,
我正在尝试从基类访问一个变量。这是父类: class Parent(object): def __init__(self, value): self.some_var = va
我通过让它调用多个函数来拆分我的类构造函数,如下所示: class Wizard: def __init__(self, argv): self.parse_arguments
COUNT(*) 和 COUNT(attribute_name) 有区别吗? 我使用 count(attribute_name) 是因为我认为它是特定的,因此搜索过程会更容易。是真的吗? 很高兴看到任
我需要访问模型的属性名称,但它没有显示所有属性名称。 我有用户模型,我在其中添加了一个 attr_accessor :color(因为我不想将其作为列存储在我的数据库中)。但是,如果我尝试使用 Use
尝试对 mysql 数据库运行插入语句时发生错误。我已经打开了 hibernate 的 sql args 跟踪,以准确查看操作转换为查询的内容以及绑定(bind)。 在 mysql 数据库中,列 AT
我是一名优秀的程序员,十分优秀!