Beim Versuch, eine Methode in Python aufzurufen, stoßen Entwickler möglicherweise auf die verwirrende Fehlermeldung „TypeError : method() benötigt 1 Positionsargument, es wurden jedoch 2 angegeben.“ Dieser Fehler kann rätselhaft sein, insbesondere wenn nur ein Argument an die Methode übergeben wurde.
Hinter den Kulissen interpretiert Python den Methodenaufruf wie folgt:
class_name.method(object, argument)
Dies ist ein Mechanismus, der Methoden ermöglicht mühelos mit dem Objekt arbeiten zu können, auf das sie einwirken. In Methodendefinitionen heißt das erste Argument üblicherweise self und bezieht sich auf die Objektinstanz.
Betrachten Sie das folgende Beispiel:
class MyClass: def method(self, arg): print(self) print(arg) my_object = MyClass() my_object.method("foo")
Bei der Ausführung wird der obige Code wie folgt übersetzt:
MyClass.method(my_object, "foo")
Dies erklärt, warum die Methode zwei Argumente akzeptiert, obwohl nur eines explizit vom Aufrufer übergeben wurde.
Um dies zu mildern Um Verwirrung zu vermeiden, können Entwickler den Dekorator staticmethod() für Methoden verwenden, die keinen Zugriff auf das Objekt erfordern, an das sie gebunden sind. Auf diese Weise verhält sich die Methode wie eine reguläre Funktion, sodass das Argument self nicht mehr erforderlich ist:
class MyOtherClass: @staticmethod def method(arg): print(arg) my_other_object = MyOtherClass() my_other_object.method("foo")
Zusammenfassend lässt sich sagen, dass Sie in Python daran denken sollten, wenn Sie auf den Fehler „Methode benötigt 1 Argument, aber 2 gegeben“ stoßen erhalten Methoden normalerweise ein zusätzliches implizites Argument, nämlich das Objekt, dem sie zugeordnet sind. Wenn Sie dieses Verhalten sorgfältig abwägen und bei Bedarf Dekoratoren verwenden, können Sie Verwirrung vermeiden und Ihren Code optimieren.
Das obige ist der detaillierte Inhalt vonWarum zeigt meine Python-Methode „TypeError: method() nimmt 1 Positionsargument an, aber es wurden 2 angegeben'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!