私はプライベート変数にアクセスする必要があるデコレータを書いていましたが、この不一致を見つけました。誰かがこれを説明できますか?
(Python 2.5)
ネーミングマングリングは、クラスで定義された属性に対して期待どおりに機能します。
>>> class Tester(object):
... __foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
'hi'
インスタンス属性は機能しません(これは私たちが正しく行うことになっている方法ですか?)
>>> class Tester(object):
... def __init__(self):
... self.__foo = "hi"
>>> t = Tester()
>>> t._Tester__foo
AttributeError: 'Tester' object has no attribute '_Tester__foo'
PS「クラス属性」はこれらの正しい言葉ですか?それらは静的ではありませんが、それらのリストの1つ、または他の可変タイプを作成すると、共有されます...
アップデート
実際、2番目の例も問題なく機能します。これはハードウェアの問題でした(再起動が役立ちました)。