【发布时间】:2018-01-28 06:56:21
【问题描述】:
我想使用内部类创建一个对象汽车,这个对象汽车具有座位数、颜色、年份、引擎等属性。最后一个属性发动机容量将具有其他属性,如阀门数量、燃料类型、公里数。
所以我先创建类汽车,然后再创建引擎类:
class car:
def __init__(self, color, year, engine):
self.color = color
self.year = year
self.engine = engine
class engine:
def __init__(lts, kms_by_lts, fuel_type, valves ):
self.lts = lts
self.fuel = fuel
self.valves = valves
self.kms_by_lts = kms_by_lts
>> my_car = car('blue','2010','v6')
>>> my_car.engine
'v6'
我想访问另一个类中的一个类,如下所示:
>>> my_car.v6.lts = 4
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: car instance has no attribute 'v6'
可以帮我解决这个问题。
问候
我重新创建对象如下:
class car:
def __init__(self, color, year, engine):
self.color = color
self.year = year
self.engine = engine()
class engine:
def __init__(lts, kms_by_lts, fuel_type, valves ):
self.lts = lts
self.fuel = fuel
self.valves = valves
self.kms_by_lts = kms_by_lts
出现以下错误
>>> my_car = car('blue','2010','v6')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in __init__
TypeError: 'str' object is not callable
【问题讨论】:
-
属性
engine的值为v6。为什么要使用不同的名称来引用属性? -
>>> my_car.engine.lts = 4 Traceback(最近一次调用最后一次):文件“
”,第 1 行,在 属性错误:'str' 对象没有属性' lts' -
这就是你给它的淡水河谷。如果您希望它具有属性“lts”,则需要创建一个引擎对象
-
但是您将引擎设置为字符串而不是引擎对象
-
self.engine = engine()在这里对您没有帮助。在您的情况下,正在使用的engine实际上是您传递的 string "v6"。阅读我在之前评论中发布的链接。
标签: python