継承されたクラスの複数のインスタンス化を防ぎたいと思います。シングルトンのパターンはこの作業には適切だと思われましたが、私が期待した結果は得られません。シングルトンクラスを拡張するクラスの初期化を防止する
これは私のコード例である:これを実行
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
class Config(metaclass=Singleton):
def __init__(self):
print('initialized')
class DevelopConfig(Config):
pass
class TestingConfig(Config):
pass
foo = DevelopConfig()
bar = TestingConfig()
が、私は単一の出力として「初期化」を参照してくださいことを期待するが、それは二回表示されます。どのようにこれらのクラスの複数のインスタンスを防ぐためのアイデア?私は何を取りこぼしたか?
編集:最終的な目標は、複数の同時設定を防止することです。よりスマートな方法があれば、私はそれを聞くのが大好きです。
感謝を。完璧な答え。 :) – sonovice