2014-04-02 96 views
0

我知道這可能是一個重複,但如果我能在這裏找到答案就會擊敗我。我希望能夠擁有不同的可以保存不同值的類的實例。我已經嘗試了深度和淺度的副本,我試着複製類的正確實例,並將其命名。如何獲得一個可以單獨編輯的Python類的兩個實例?

>>> class classy: 
... a = 1 
... b = 2 
... 
>>> import copy 
>>> x = copy.deepcopy(classy) 
>>> y = copy.deepcopy(classy) 
>>> x.a = 100 
>>> y.a 
100 

所以基本上我想y.a返回,而不是100

感謝

+0

你應該閱讀關於類的python文檔:https://docs.python.org/2/tutorial/classes.html –

回答

5

使用instance variables 1。這就是他們的目的。

class classy: 
    def __init__(self): 
     self.a = 1 
     self.b = 2 

x = classy() 
y = classy() 
x.a = 100 
>>> print y.a 
1 
+0

你,先生,很漂亮。它不會讓我接受另外六分鐘的時間...... –

+2

請注意,即使他的初始代碼也能工作,如果他使用實例而不是類。但這仍然是正確的答案。 – BrenBarn

1

Jayanth已經顯示出這樣做的方式。我只想指出你的代碼的關鍵問題。

您的問題標題詢問有關實例,但您的代碼沒有實例。你只有一堂課。如果你想要一個類的實例,則需要通過調用類進行實例,這是做:

>>> class classy: 
...  a = 1 
...  b = 2 
>>> x = classy() 
>>> y = classy() 
>>> x.a = 100 
>>> y.a 
1 

注意Jayanth做到這一點在他的回答也是如此。即使沒有使用Jayanth的答案中所示的實例屬性,上述代碼工作的原因稍微複雜一些,但基本點至關重要:實例和類是兩個不同的東西。您可以通過調用該類從類中創建實例。您應該閱讀以熟悉Python中的類和實例。

+0

謝謝布倫,我會看看文檔。 –

相關問題