5

次のコードを使用して、Python でシングルトンをインスタンス化しています。

class Singleton(type):
    def __init__(cls, name, bases, dic):
        super(Singleton, cls).__init__(name, bases, dic)
        cls.instance = None

    def __call__(cls, *args, **kwargs):
        if cls.instance is None:
            if DEBUG:
                print("Creating NEW Orchestrator instance")
        else:
            if DEBUG:
                print("Using EXISTING Orchestrator instance")

            cls.instance = super(Singleton, cls).__call__(*args, **kwargs)

        return cls.instance

初期化は次のようになります。

def __init__(self, arg=None):
    ...

オブジェクトをインスタンス化すると、引数を受け入れないようです:

Obj = Object("parameter")

arg が等しくありません"parameter"。なしです。

これが *args をcallに渡す目的だと思いました。シングルトンを最初にインスタンス化するときに引数を渡すにはどうすればよいですか?

4

2 に答える 2