2015-04-01 41 views
0

我收到一个错误:Python:Error = Class'Foo'没有'bar'成员?

AttributeError错误:类型的对象 '店' 有没有属性 '库存'

我的类设置:

class Shop(object): 
    def __init__(self, name, inventory, margin, profit): 
     self.name = name 
     self.inventory = inventory 
     self.margin = margin 
     self.profit = profit 


# Initial inventory including 2 of each 6 models available 
inventory = 12 
# Markup of 20% on all sales 
margin = .2 
# Revenue minus cost after sale 
for bike in bikes.values(): 
    profit = bike.cost * margin 

,我想打印盘点:

print "Mike's Bikes has {} bikes in stock.".format(Shop.inventory) 

但保持相同的错误。我可以把它一起工作:

print "Mike's Bikes has %d bikes in stock." % (inventory) 

,但我试图使开关.format()

+4

你的**类**没有这样的属性;你从来没有创建过类的实例。 – 2015-04-01 14:17:27

+0

self.inventory =库存? – 2015-04-01 14:17:58

+2

'__init__'方法* only *在有实际的'self',一个实例创建时运行。你需要调用这个类来创建一个实例。 – 2015-04-01 14:18:46

回答

6

您从未创建过实例的类的,所以Shop.__init__()方法也从未运行。

您的没有这样的属性;您为Shop类定义的唯一属性是__init__方法本身。

创建类的实例,然后寻找该实例上的属性:

# Initial inventory including 2 of each 6 models available 
inventory = 12 
# Markup of 20% on all sales 
margin = .2 
# Revenue minus cost after sale 
for bike in bikes.values(): 
    profit = bike.cost * margin 

bikeshop = Shop("Mike's Bikes", inventory, margin, profit) 
print "Mike's Bikes has {} bikes in stock.".format(bikeshop.inventory) 

Shop(....)创建实例,Python中创建的实例,并呼吁该实例上__init__方法。因此,inventory属性已添加到该实例,然后您可以通过bikeshop.inventory访问它。