Heim > Backend-Entwicklung > Python-Tutorial > Warum zeigt meine Python-Methode „TypeError: method() nimmt 1 Positionsargument an, aber es wurden 2 angegeben'?

Warum zeigt meine Python-Methode „TypeError: method() nimmt 1 Positionsargument an, aber es wurden 2 angegeben'?

Susan Sarandon
Freigeben: 2024-12-13 15:27:10
Original
514 Leute haben es durchsucht

Why Does My Python Method Show

Den mysteriösen Fehler „Method Takes 1 Argument But 2 Given“ verstehen

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)
Nach dem Login kopieren

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")
Nach dem Login kopieren

Bei der Ausführung wird der obige Code wie folgt übersetzt:

MyClass.method(my_object, "foo")
Nach dem Login kopieren

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")
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage