プライベート変数にアクセスする必要があるデコレータを作成しましたが、この不一致が見つかりました。誰もこれを説明できますか?Pythonの "private"名前のマングリングとインスタンスのvsクラスの属性
(パイソン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 「クラス属性」はこれらの正しい言葉ですか? 2番目の例では、あまりにも、正常に動作し、実際に
更新彼らは静的ではありませんが、あなたはそれが共有されているものをリスト、またはいくつかの他の可変タイプ、のいずれかを作れば...
。ハードウェアの問題でした(再起動に役立ちました)。
クラス属性は正しい単語です。そして、彼らは常に*共有されています。変異は問題ではありません。あなたが与えられたオブジェクトを突然変異させることができるかどうかを尋ねる時を除いて、それはかなり重要ではありません。 – delnan
この質問をすることはできますか?それとも誰もそれを保つ価値を見ているのですか?元の問題は再現できません。期待どおりに動作するようです。 – Rafe
@MartijnPietersは多くのPythonのテストで問題をテストしてきたので、あちこちに残しておいてください。 – jsbueno