Ich musste einen Singleton für meinen Code erstellen. Also folgte ich these instructions, method 3. HierSingleton, Metaklasse und Fehler bei der Instanziierung
ist der Code, den ich habe:
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]
def MyCfg(object):
__metaclass__ = Singleton
def __init__(self, p1 = 1, p2 = 2):
# Some code
my_cfg = MyCfg()
jedoch whenI diesen Code ausführen, erhalte ich eine folgende Fehlermeldung:
TypeError: MyCfg() takes exactly 1 argument (0 given)
Ich bin nicht neu in python
und Programmierung, aber ich nie arbeitete mit python
auf dieser Ebene. Ich habe versucht zu verstehen, was genau passiert in Singleton
Klasse, aber ich kann nicht herausfinden.
Würde jemand erklären können, warum dieser Code einen Fehler erzeugt?
@shaktimaan Es hat nicht funktioniert. Immer noch der gleiche Fehler. – flashburn
'MyCfg' ist eine Funktion, keine Klasse. Ändern Sie das 'def' in' class'. – Dunes