Ich habe eine Klasse, die eine Instanz derselben Klasse als Initialisierung akzeptieren soll; In diesem Fall wird diese Instanz einfach zurückgegeben.Die beste Python-Methode, um den Initialisierungswert der Klasse bei derselben Klasse zurückzugeben
Der Grund ist, dass ich möchte, dass diese Klasse eine Unzahl von Initialisierungswerten akzeptiert, und dann kann der fortschreitende Code dies als ein Objekt mit bekannten Eigenschaften verwenden, unabhängig davon, wie es initialisiert wurde.
Ich habe gedacht, so etwas wie:
class c(object):
def __new__(cls, *args, **kwargs):
if isinstance(args[0], c):
return args[0]
else:
return super(c, cls).__new__(cls, *args, **kwargs)
Das Problem ist, dass ich nicht __init__()
will aufgerufen, wenn auf diese Weise initialisiert werden. Gibt es einen anderen Weg?
Danke!
Warum wollen Sie nicht '__init __()' aufgerufen werden? Wäre es in Ordnung, wenn "__init __()" aufgerufen würde, aber nichts unternommen hätte? –
'__init __()' sollte nur aufgerufen werden, wenn args [0] nicht von der Klasse ist – Pato
Ja, das haben Sie bereits in Ihrer Frage angegeben. Aber ich frage Sie: Warum ist das wichtig? Wie wichtig ist es, dass Sie den Anruf vermeiden? Sie können den Aufruf leicht dazu veranlassen, nichts zu tun, wenn Sie mit einer Instanz initialisieren, oder etwas tun, wenn Sie mit anderen Werten initialisieren. –