2014-03-27 73 views
1

我試圖製作具有不同內容的對象列表,但是當我創建實例時,它會編輯所有其他實例。具有不同內容的類的多個實例

class Example(object): 
    name = '' 

    @classmethod 
    def __init__(cls, name): 
     cls.name = name 

col = [] 
col.append(Example('text1')) 
col.append(Example('text2')) 
for item in col: 
    print item.name 

而且它打印

'text2' 
'text2' 

當我希望它打印

'text1' 
'text2' 

我也試圖與

var = Example('text1') 
col.append(var) 

我不能設置不同變量名稱,因爲我想讓它在a中創建實例循環。

+2

爲什麼你把'__init__'作爲類方法呢?不要這樣做。 –

回答

4

不要__init__一個類的方法;它實例初始化

class Example(object): 
    name = '' 

    def __init__(self, name): 
     self.name = name 

通過使其成爲一個類的方法,你做它改變類,而不是創建新的實例。

沒有@classmethod修飾符,類級name屬性是完全可選的,您可以將其刪除以用於大多數用途。

+0

這樣做,謝謝。並感謝您的解釋。 – Unaipg

0

你想這樣的:

class Example(object): 
    def __init__(self, name): 
     self.name = name 
相關問題