Maison > développement back-end > Tutoriel Python > Pourquoi ma méthode Python affiche-t-elle « TypeError : method() prend 1 argument de position mais 2 ont été donnés » ?

Pourquoi ma méthode Python affiche-t-elle « TypeError : method() prend 1 argument de position mais 2 ont été donnés » ?

Susan Sarandon
Libérer: 2024-12-13 15:27:10
original
541 Les gens l'ont consulté

Why Does My Python Method Show

Comprendre la mystérieuse erreur « La méthode prend 1 argument mais 2 donnés »

Lorsqu'ils tentent d'appeler une méthode en Python, les développeurs peuvent rencontrer le message d'erreur déroutant « TypeError : method() prend 1 argument de position mais 2 ont été donnés." Cette erreur peut être déroutante, surtout lorsqu'un seul argument a été transmis à la méthode.

En coulisses, Python interprète l'appel de méthode comme :

class_name.method(object, argument)
Copier après la connexion

Il s'agit d'un mécanisme qui permet aux méthodes travailler sans effort avec l’objet sur lequel ils agissent. Dans les définitions de méthodes, le premier argument est classiquement nommé self, qui fait référence à l'instance d'objet.

Considérons l'exemple suivant :

class MyClass:
    def method(self, arg):
        print(self)
        print(arg)

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

Une fois exécuté, le code ci-dessus se traduit par :

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

Cela explique pourquoi la méthode prend deux arguments, même si un seul a été explicitement passé par l'appelant.

Pour atténuer cela En cas de confusion, les développeurs peuvent utiliser le décorateur staticmethod() sur des méthodes qui ne nécessitent pas d'accès à l'objet auquel elles sont liées. De cette façon, la méthode se comportera comme une fonction normale, éliminant ainsi le besoin de l'argument self :

class MyOtherClass:
    @staticmethod
    def method(arg):
        print(arg)

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

En résumé, lorsque vous rencontrez l'erreur "La méthode prend 1 argument mais 2 donnés", rappelez-vous qu'en Python , les méthodes reçoivent généralement un argument implicite supplémentaire, qui est l'objet auquel elles sont associées. Considérer attentivement ce comportement et utiliser des décorateurs si nécessaire peut éviter toute confusion et rationaliser votre code.

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