我在學習Python,但沒有OOP體驗。我進入IDLE以下行(Python的3.3),和對象的行爲是混淆了我:Python中類的特殊行爲
>>> class IBAN:
ISOcode = ' '
checkDigits = '00'
class CCC:
bankCode = '0000'
branchCode = '0000'
checkBank = '0'
checkAccount = '0'
account = '0000000000'
>>> >>> numberOne = IBAN()
>>> numberOne.CCC
<class '__main__.IBAN.CCC'>
>>> numberOne.CCC.bankCode
'0000'
>>> numberOne.ISOcode = 'ES'
>>> IBAN.ISOcode
' '
>>> numberOne.ISOcode
'ES'
>>> IBAN.ISOcode = 'FR'
>>> numberOne.ISOcode
'ES'
>>> IBAN.ISOcode = 'FR'
>>> IBAN.ISOcode
'FR'
>>> numberTwo = IBAN()
>>> numberTwo.ISOcode
'FR'
>>> IBAN.ISOcode = 'IT'
>>> IBAN.ISOcode
'IT'
>>> numberOne.ISOcode
'ES'
>>> numberTwo.ISOcode
'IT'
>>> IBAN.ISOcode is numberTwo.ISOcode
True
>>>
爲什麼對象numberTwo
一樣的IBAN
的ISOcode的ISOcode屬性,但不是與對象numberOne
的ISO代碼相同?
我希望這樣的事情:
>>> numberOne.ISOcode
'ES'
>>> numberTwo.ISOcode
'FR'
然而,這不符合我的結果。
我發現a similar question on StackOverflow,這使我想到的結果應該是:
>>> numberOne.ISOcode
'IT'
>>> numberTwo.ISOcode
'IT'
但是,這並不要麼符合我的結果。
任何人都可以解釋或鏈接到解釋Python中類的行爲的資源嗎?我試圖學習Guido van Rossum的Python教程和「Unifying types and classes in Python 2.2」,但我無法理解他們在說什麼。
謝謝!
非常感謝@BrenBarn!這清楚了我對Python屬性處理方面的很多想法。 – Trimax