“Ce constructeur ne prend pas d'arguments” erreur dans __init__
J'obtiens une erreur lors de l'exécution du code suivant:
class Person:
def _init_(self, name):
self.name = name
def hello(self):
print 'Initialising the object with its name ', self.name
p = Person('Constructor')
p.hello()
La sortie est:
Traceback (most recent call last):
File "./class_init.py", line 11, in <module>
p = Person('Harry')
TypeError: this constructor takes no arguments
Quel est le problème?
- Les réponses ont souligné que
__init__
utilise les doubles traits de soulignement. Mais la raison pour laquelle vous obtenez le message d'erreur est que, par défaut, votre classe est livré avec un vide__init__(self)
méthode héritée deobject
. Puisque vous n'avez pas surcharger cette méthode, c'est celle qui a été appelé. - Dans de semblables cas d'erreur de frappe (dans ce cas, un seul trait de soulignement au lieu de deux), je suis tombé dans la même erreur en nommant la méthode
__ini__
Vous devez vous connecter pour publier un commentaire.
La méthode devrait être nommé
__init__
à être un constructeur, pas_init_
. (Notez le double souligne.)Si vous utilisez des traits de soulignement, il vous suffit de créer une méthode nommée
_init_
, et d'avoir un constructeur par défaut, qui ne prend pas d'arguments.Double souligne de
__init__
.(Tous les méthodes spéciales en Python de début et de fin avec lits doubles, non unique, des traits de soulignement.)