次の内容のmainとxの2つのモジュールがあるとします。
主要:
class Singleton(object):
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(Singleton, cls).__new__(cls, *args, **kwargs)
cls._instance.x = 10
return cls._instance
uvw = Singleton()
if __name__ == "__main__":
print(id(uvw))
uvw.x += 10
print(uvw.x)
import x
それぞれとx:
import main
print(id(main.uvw))
print(main.uvw.x)
mainを実行すると、両方のインスタンスで同じIDと値20が生成されると期待しますが、取得するのは次のとおりです。
$ python main.py
140592861777168
20
140592861207504
10
uvw
両方の場所で同じオブジェクトであることを確認する方法はありますか?