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!