我正在寫一個裝飾器,需要訪問私有變量,並發現這種差異。任何人都可以解釋嗎?Python的「私人」名稱mangling和實例與類的屬性
(Python 2.5的)
命名重整作品如預期的類中定義的屬性:
實例屬性不工作(這是我們應該做的是正確的方法是什麼? )
>>> class Tester(object):
... def __init__(self):
... self.__foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
AttributeError: 'Tester' object has no attribute '_Tester__foo'
PS 「班級屬性」是否適合這些?他們不是靜態的,但如果你把其中的一個列表,或其他一些可變類型,它是共享的...
更新
事實上,第二個例子中正常工作了。這是一個硬件問題(重新啓動)。
類屬性是正確的詞。他們*總是*共享。可變性不重要。除非詢問你是否可以改變給定的對象,否則它幾乎從不重要。 – delnan
我可以提出這個問題嗎?還是有人看到保持它的價值?我無法重現我的原始問題。它似乎按預期工作。 – Rafe
寧願留下它,因爲@MartijnPieters在很多Python測試中一直在測試這個問題。 – jsbueno