2015-04-01 38 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訪問它。