Неопределенные константы в затмении - PullRequest
1 голос
/ 13 сентября 2011

Я использую eclipse / aptana для разработки на python. У меня нет проблем с моим конфигом пути Python, автозаполнение отлично работает со всеми, но у меня возникла следующая проблема:

Когда у меня есть «константа» в одном из моих классов, и я пытаюсь получить к ней доступ, затмение жалуется на «неопределенную переменную из импорта» на константу, например,

class Universe(object):
    ULTIMATE_ANSWER = 42

# in different module
# edit from: import Universe
from bigbang.models import Universe
print Universe.ULTIMATE_ANSWER

где Universe.ULTIMATE_ANSWER выдает предупреждение. Кроме того, автозаполнение работает нормально, поэтому, когда я набираю Universe.x, я получаю все предложенные константы.

Это не срочная проблема, однако она может раздражать и может заставить вас игнорировать реальные ошибки.

Есть идеи, как заставить затмение вести себя на этом? :)

Edit: Это происходит только при импорте класса в другой модуль.

Редактировать 2: В случае, если это не ясно выше, код работает, это примерно предупреждение, которого не должно быть ... Я попробовал и повторил это на других проектах, кроме моего, как в затмении, так и в aptana с pydev.

Редактировать 3: Как и в комментариях ниже, это, вероятно, ошибка в pydev. Отправлено и ждет ...

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

если (см. @Aix) вы имели в виду from mymodel import Universe:

Используйте Ctrl + 1 после Universe.ULTIMATE_ANSWER; Вам будет предложено добавить комментарий, чтобы игнорировать эту ошибку.

Вы также можете добавить свою модель как принудительную встроенную функцию, запрашивая анализ, как во время выполнения (что, как вы сказали, не дало ошибки)

0 голосов
/ 13 сентября 2011

Вы не import класс, вы импортируете модуль.

Если ваш модуль называется Universe (как и ваш класс), то полное имя переменной будет Universe.Universe.ULTIMATE_ANSWER.

Если вы определили переменную на верхнем уровне модуля (то есть вне вашего класса), то она будет называться Universe.ULTIMATE_ANSWER:

# Universe module
ULTIMATE_ANSWER = 42
class Universe(object):
    pass

# in different module
import Universe
print Universe.ULTIMATE_ANSWER
...