Ошибка Python NameError: имя «…» не определено

Я новичок в программировании, особенно на Python. Если это поможет, я попробую бесплатный класс Udacity, расположенный здесь:

https://www.udacity.com/course/viewer#!/c-ud088/l-3621198668/m-3612388742

Я на отметке времени 1:14 в этом видео.

Различия в том, что у меня есть версия Python 3.5 в Windows 10 по сравнению с версией Python 2.7. Также я использую Sqlalchemy версии 1.0.9 (они используют версию 0.9). Мне удалось перевести их инструкции из их версий в новые версии. Однако, когда я получаю следующую ошибку, я не уверен, что не так.

В консоли Python я набираю:

items = session.query(MenuItems).all()

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

Отслеживание (последний последний вызов): файл "", строка 1, в " NameError: имя "MenuItems" не определено

Пожалуйста, дайте мне знать, если я что-то упустил. Заранее благодарю.


person magicmaster85    schedule 07.12.2015    source источник
comment
Обычно это означает, что вы либо не определили, какими должны быть элементы меню, либо забыли импортировать их из какого-либо другого класса/модуля.   -  person Sidharth Shah    schedule 07.12.2015
comment
Кроме того, убедитесь, что даже если путь кода определил эту переменную, нет другого пути, где она остается неопределенной.   -  person jheld    schedule 07.12.2015


Ответы (2)


NameError: имя «MenuItems» не определено

Когда вы получаете эту ошибку, вы либо используете какое-то имя до того, как оно было определено, либо до того, как оно было импортировано. Чтобы избежать этого, вы ожидаете где-то from x import MenuItem или определение вроде MenuItem = ... или class MenuItem.

Я посмотрел несколько видео до этого, инструктор импортирует такие:

from database_setup import Base, Restaurant, MenuItem

Итак, если вы следили за видео, у вас должен быть class MenuItem, определенный в database_setup.py.

Я предлагаю вам пересмотреть "Собираем все вместе" так что вы получаете модули и импортируете правильно.

person bakkal    schedule 07.12.2015
comment
Спасибо всем за ваши отзывы. Баккал, по какой-то причине, когда я перечитал вашу строку импорта из базы данных ... (и хотя я все вводил правильно), я понял, что добавил s в MenuItem, поэтому он не работает. Большое спасибо за вашу точку зрения. Я отмечу ответ как решенный, как только наберу достаточно репутации. - person magicmaster85; 07.12.2015
comment
Я пробовал, там написано, что мне нужно 15 репутации :( ... Я планирую вернуться ко всем своим постам, как только получу 15 репутации (чтобы я мог проголосовать). :) - person magicmaster85; 07.12.2015

Это означает, что у вас нет объекта с именем MenuItems (вы написали его по-другому?). Вам нужно определить что-то, прежде чем использовать это в первую очередь. У вас должно получиться утверждение, похожее на:

MenuItems = {... code}
person Suitangi    schedule 07.12.2015