The following code shows no error.
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)
Why is __bar acting like a singleton?