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?
 
     
    