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
Susan Sarandonoriginal
2024-12-13 15:27:10519parcourir

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)

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")

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

MyClass.method(my_object, "foo")

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")

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!

Déclaration:
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