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.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage