Подтвердить что ты не робот

Ошибка "конструктор не принимает аргументов" в __init__

Я получаю сообщение об ошибке при запуске следующего кода:

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

Вывод:

Traceback (most recent call last):  
  File "./class_init.py", line 11, in <module>  
    p = Person('Harry')  
TypeError: this constructor takes no arguments

В чем проблема?

4b9b3361

Ответ 1

Метод должен быть назван __init__ как конструктор, а не _init_. (Обратите внимание на двойные подчеркивания.)

Если вы используете одиночные символы подчеркивания, вы просто создаете метод с именем _init_ и получаете конструктор по умолчанию, который не принимает аргументов.

Ответ 2

Используйте двойные подчеркивания для __init__.

class Person:
  def __init__(self, name):

(Все специальные методы в Python начинаются и заканчиваются двойными, а не одиночными символами подчеркивания.)

Ответ 3

class Robots:
  def __init__(self,subject): #add double underscores,on both sides.

Подсказка искать в этой документации с явным пониманием методов python