2
次のコードはエラーを示していません。二重アンダースコアを使用した変数名の不思議な動作
class Bar():
pass
class Foo():
def __init__(self):
self.__bar = Bar()
def get_bar(self):
return self.__bar
foo = Foo()
bar1 = foo.get_bar()
foo.__bar = Bar()
bar2 = foo.get_bar()
assert (bar1 is bar2)
なぜ__barはシングルトンのように機能しますか?
または 'self .__ foo'を設定する' set_bar'メソッドを実装した場合。 –
Danielが彼のコメントで言ったことを強調するために、 'set_bar'メソッドを実装するのが正しい方法です。この回答の例は、名前のマングリングを示すためのものでした。 – larsks