Отсутствует 1 обязательный позиционный аргумент
Позвольте мне начать с того, что я настолько же зелен, насколько это возможно, когда дело доходит до программирования, но я делаю процесс. Однако мой разум все еще должен полностью понять, почему и что происходит.
В любом случае, под рукой, как предполагает Заголовок, я вставлю исходный код, который сведу к минимуму.
(Я использую Python версии 3.4.1)
class classname:
def createname(self, name):
self.name = name;
def displayname(self):
return self.name;
def saying(self):
print("Hello %s" % self.name);
first = classname;
second = classname;
first.createname("Bobby");
Я вставлю сюда код ошибки:
Traceback (most recent call last):
File "<pyshell#16>", line 1, in <module>
first.createname("Bobby")
TypeError: createname() missing 1 required positional argument: 'name'
Я понимаю, что мне нужно проверить ошибки и внимательно прочитать, что там написано, а также выполнить поиск перед публикацией. После этого я не смогу решить проблему, и я пришел сюда, чтобы опубликовать ее...
С этого момента вы можете прочитать, если вам интересно, что я думаю о том, что происходит в моей голове:
Ошибка говорит мне, что мне нужно еще 1 аргумент в имени, поэтому я, должно быть, ошибаюсь, но я уже пробовал что-то вроде этого:
first.createname("bobby", "timmy");
Имеете больше аргументов в названии? Если я правильно понимаю, аргумент в этом ->() & lt; -
Я также исключаю тот факт, что это будет def createname (self, name), потому что self есть или должно быть одиноко и не включено? Поэтому я не очень понимаю, что происходит.
Заранее благодарю и извините, если на этот вопрос уже был дан ответ, в таком случае я должен был его пропустить.
РЕШИТЬ:
first = classname;
second = classname;
Должно быть:
first = classname();
second = classname();
В скобках отсутствует, что, конечно, означает, что я просто сделал первый и второй EQUAL для чего-то другого, а не связал его с "фактическим
Ответы
Ответ 1
Это очень простой ответ, удивленный, что вы так и не получили ответа! :(
Вы еще не создали объект.
Например, вы хотели бы написать:
first = classname()
вместо просто
first = classname
На данный момент, как вы написали, first
указывает на класс. Например, если вы спросите, что такое first
, вы получите:
<class '__main__.classname'>
Однако, после его создания (просто добавив ()
в конце), вы увидите, что first
теперь:
<__main__.classname object at 0x101cfa3c8>
Важным отличием здесь является то, что ваш вызов создал класс, а мой создал объект.
Класс для объекта такой же, как человечество для вас, или как собака для Ласси.
Вы создали "собачий", а вы хотели создать "Лесси".
Примечание: вы также обычно хотите инициализировать ваши объекты. Для этого вы помещаете метод __init__
в ваш класс.