Heim >Backend-Entwicklung >Python-Tutorial >Warum tritt „TypeError: method() nimmt 1 Positionsargument, aber es wurden 2 angegeben' auch bei einem expliziten Argument auf?
„TypeError: method() nimmt 1 Positionsargument, aber 2 wurden angegeben“ mit nur einem übergebenen Argument
Wenn der Fehler „TypeError : method() nimmt 1 Positionsargument, es wurden aber 2 angegeben“ Obwohl nur ein Argument übergeben wird, ist es wichtig, den Methodenaufruf von Python zu verstehen Konvention.
In Python sind Methodenaufrufe syntaktischer Zucker für eine ausführlichere Syntax. Beim Aufrufen einer Methode für ein Objekt übersetzt die Sprache den Aufruf in eine explizitere Form, wobei das Objekt zum ersten Argument der Methode wird.
Zum Beispiel der folgende Aufruf:
my_object.method("foo")
wird hinter den Kulissen übersetzt in:
MyClass.method(my_object, "foo")
Hier wird das erste Argument (my_object) innerhalb der Methodendefinition als self-Parameter bezeichnet. Dieser Parameter stellt das Objekt dar, für das die Methode aufgerufen wird.
In den meisten Fällen erfordern Methoden Zugriff auf das Objekt, für das sie aufgerufen werden. Gelegentlich möchten Sie jedoch möglicherweise eine Methode, die nicht von dem Objekt abhängt, an das sie gebunden ist. In solchen Fällen können Sie die Funktion staticmethod() von Python verwenden, um die Methode zu dekorieren:
class MyOtherClass: @staticmethod def method(arg): print(arg)
Durch die Dekoration einer Methode mit staticmethod() ist kein self-Parameter erforderlich, sodass Sie die Methode direkt ohne Referenzierung aufrufen können das Objekt:
my_other_object.method("foo")
Dies verdeutlicht, warum der Fehler, auf den Sie gestoßen sind, besagt, dass zwei Argumente bereitgestellt wurden. Python interpretiert das Objekt, für das Sie die Methode aufrufen (z. B. my_object im Originalbeispiel), als implizites erstes Argument, was dazu führt, dass insgesamt zwei Argumente übergeben werden.
Das obige ist der detaillierte Inhalt vonWarum tritt „TypeError: method() nimmt 1 Positionsargument, aber es wurden 2 angegeben' auch bei einem expliziten Argument auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!