Maison >développement back-end >Tutoriel Python >Pourquoi mon code Python renvoie-t-il une « TypeError : manquant 1 argument de position requis : 'self'' ?

Pourquoi mon code Python renvoie-t-il une « TypeError : manquant 1 argument de position requis : 'self'' ?

DDD
DDDoriginal
2024-12-14 19:59:14409parcourir

Why Does My Python Code Throw a

Pourquoi TypeError : il manque 1 argument de position requis : 'self' se produit

En Python, lorsque vous travaillez avec des classes, on peut rencontrer une exception en appelant une méthode de classe. Le message d'erreur spécifique "TypeError : Missing 1 require positional argument: 'self'" indique que la méthode constructeur n'a pas été correctement appelée pour créer une instance de la classe avant d'appeler la méthode.

Comprendre l'objectif de 'self'

'self' est une variable spéciale qui est automatiquement passée comme premier argument à toutes les méthodes de classe (y compris le constructeur). Il représente l'instance de la classe et donne accès à ses attributs et méthodes.

Invocation de constructeur

Une méthode constructeur (__init__) doit être appelée pour initialiser une instance de classe . Pour l'invoquer, il faut instancier la classe en créant un objet en utilisant la syntaxe ClassName(). Cela attribue l'argument self à l'instance et initialise ses attributs et comportements.

Exemple de clarté

Considérez l'extrait de code suivant :

class Pump:
    def __init__(self):
        print("init")

    def getPumps(self):
        pass

p = Pump.getPumps()  # Error: TypeError: getPumps() missing 1 required positional argument: 'self'
print(p)

Dans ce code, le constructeur (__init__) n'est pas appelé avant d'appeler getPumps(). Par conséquent, aucune instance de la classe Pump n'est créée et l'argument self est manquant, ce qui entraîne l'erreur.

Solution

Pour résoudre le problème, il faut d'abord créez une instance de la classe Pump, puis appelez la méthode getPumps() sur l'instance. Le code correct serait :

p = Pump()
p.getPumps()
print(p)

En créant d'abord une instance, l'argument self est correctement attribué et la méthode getPumps() peut être invoquée avec succès.

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