“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 de object. 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__
InformationsquelleAutor Sagnik Kundu | 2012-09-16