我不是程序員,我正在嘗試學習python。但是我對這個對象實例化有點困惑。我覺得類像一個模板和對象是基於模板make(或實例化)。 這並不意味着一旦創建對象(例如,classinst1 = MyClass()),模板中的更改不應該影響對象中的內容?請幫我理解python對象的實例。
另外,下面的代碼表明我可以改變類變量「common」,但前提是我沒有爲對象中的「common」變量賦值一個新值。 如果我在對象中指定了一個新值(比如classinst1.common = 99),那麼更改我的類變量「common」不會再影響classinst.common的值?
有人可以請澄清爲什麼下面的代碼表現這樣的方式?所有的OO語言都是常見的,還是Python的一個奇怪的方面?
===============
>>> class MyClass(object):
... common = 10
... def __init__(self):
... self.myvar=3
... def myfunction(self,arg1,arg2):
... return self.myvar
...
>>> classinst1 = MyClass()
>>> classinst1.myfunction(1,2)
3
>>> classinst2 = MyClass()
>>> classinst2.common
10
>>> classinst1.common
10
>>> MyClass.common = 50
>>> classinst1.common
50
>>> classinst2.common
50
>>> classinst1.common = 99
>>> classinst2.common
50
>>> classinst1.common
99
>>> MyClass.common = 7000
>>> classinst1.common
99
>>> classinst2.common
7000
它很常見,如果一個類中的變量在它前面沒有自己,那麼這個類的所有實例 – bwbrowning