Also, ich lese etwas Code online und ich stieß auf die folgende Klassendefinition und ich bin ein wenig verwirrt;Warum übergibt dieser Code einen Parameter an einen Konstruktor, wenn keine Methode __init__ vorhanden ist?
class MyClass(OrderedDict):
def __hash__(self):
return hash(tuple(self.iteritems()))
Anderswo im Code gibt es die folgende Zeile;
MyClass(my_OD)
Wobei my_OD
ein geordnetes Wörterbuch ist. Meine Frage ist, wie können Sie ein Argument an diese Klasse weitergeben, wenn es keine __init__
Methode gibt? Wo wird diese Variable innerhalb der Klasse zugewiesen? Ich komme aus Java und ich bin ziemlich sicher, dass Sie in Java kein Argument ohne Konstruktor an eine Klasse übergeben können, daher ist dieses Verhalten mir fremd.
Das würde erklären, warum Sie iteritems() auf 'self' aufrufen können - ein MyClass-Objekt? – BlaqICE
Ja, 'iteritems' ist eine Methode für' dict' Objekte und OrderedDict erbt von 'dict', so dass' MyClass.iteritems' tatsächlich 'dict.iteritems' aufruft. – aneroid