Maison > développement back-end > Tutoriel Python > Pourquoi « TypeError : method() prend 1 argument de position mais 2 ont été donnés » se produit-il même avec un argument explicite ?

Pourquoi « TypeError : method() prend 1 argument de position mais 2 ont été donnés » se produit-il même avec un argument explicite ?

Mary-Kate Olsen
Libérer: 2024-12-30 13:25:10
original
573 Les gens l'ont consulté

Why Does

"TypeError : method() prend 1 argument de position mais 2 ont été donnés" avec un seul argument transmis

Lorsque vous rencontrez l'erreur "TypeError : method() prend 1 argument de position mais 2 ont été donnés" malgré le passage d'un seul argument, il est important de comprendre l'appel de méthode de Python convention.

En Python, les appels de méthode sont du sucre syntaxique pour une syntaxe plus verbeuse. Lors de l'appel d'une méthode sur un objet, le langage traduit l'appel sous une forme plus explicite, où l'objet devient le premier argument de la méthode.

Par exemple, l'appel suivant :

my_object.method("foo")
Copier après la connexion

est traduit en coulisses par :

MyClass.method(my_object, "foo")
Copier après la connexion

Ici, le premier argument (my_object) est appelé le paramètre self dans la définition de la méthode. Ce paramètre représente l'objet sur lequel la méthode est appelée.

Dans la plupart des cas, les méthodes nécessitent un accès à l'objet sur lequel elles sont appelées. Mais parfois, vous souhaiterez peut-être une méthode qui ne dépend pas de l'objet auquel elle est liée. Dans de tels cas, vous pouvez utiliser la fonction staticmethod() de Python pour décorer la méthode :

class MyOtherClass:

    @staticmethod
    def method(arg):
        print(arg)
Copier après la connexion

Décorer une méthode avec staticmethod() élimine le besoin d'un paramètre self, vous permettant d'appeler la méthode directement sans référence l'objet :

my_other_object.method("foo")
Copier après la connexion

Cela clarifie pourquoi l'erreur que vous avez rencontrée indique que deux arguments ont été fournis. Python interprète l'objet sur lequel vous appelez la méthode (par exemple, my_object dans l'exemple d'origine) comme un premier argument implicite, ce qui entraîne la transmission d'un total de deux arguments.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal