错误显示:
AttributeError: 'list' object has no attribute 'cost'
我正在尝试使用下面的类来处理自行车字典,以便进行简单的利润计算:
class Bike(object):
def __init__(self, name, weight, cost):
self.name = name
self.weight = weight
self.cost = cost
bikes = {
# Bike designed for children"
"Trike": ["Trike", 20, 100],
# Bike designed for everyone"
"Kruzer": ["Kruzer", 50, 165]
}
当我试图用for语句计算利润时,会得到属性错误。
# Markup of 20% on all sales
margin = .2
# Revenue minus cost after sale
for bike in bikes.values():
profit = bike.cost * margin
首先,我不知道为什么它指的是一个列表,而一切似乎都被定义了,不是吗?
在使用之前,需要将dict的值传递到
Bike
构造函数中。或者,请看namedtuple
——看起来更符合您要做的事情。它们是列表,因为您在字典中将它们作为列表键入:
你应该改用自行车课:
这可以让你得到自行车的成本,自行车。成本,因为你试图。
现在将打印:
考虑:
输出:
不同之处在于,在
bikes
字典中,将值初始化为列表[...]
。相反,代码的其余部分似乎需要Bike
实例。所以创建Bike
实例:Bike(...)
。至于你的错误
当您试图对
list
对象调用.cost
时,将发生这种情况。很简单,但是我们可以通过查看您调用.cost
的位置来了解发生了什么事情——在这一行中:这表示至少有一个
bike
(即bikes.values()
的成员是一个列表)。如果您查看一下定义的位置bikes
,您可以看到这些值实际上是列表。所以这个错误是有道理的。但是,由于您的类有一个cost属性,看起来您试图使用
Bike
实例作为值,所以我做了一点小小的更改:你们都准备好了。
相关问题 更多 >
编程相关推荐