Ошибка "конструктор не принимает аргументов" в __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
В чем проблема?
Ответы
Ответ 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