Die Python3 Singleton-Metaklassenmethode funktioniert nicht
Ich habe viele Methoden zum Erstellen eines Singletons in Python gesehen und versucht, die Metaklassenimplementierung mit Python 3.2 (Windows) zu verwenden, aber es scheint nicht dieselbe Instanz meiner Singleton-Klasse zurückzugeben.
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 MyClass(object):
__metaclass__ = Singleton
a = MyClass()
b = MyClass()
print(a is b) # False
Ich verwende jetzt die Decorator-Implementierung, die funktioniert, aber ich frage mich, was mit dieser Implementierung nicht stimmt.