Как назвать переменные экземпляра в Python?

Я стараюсь придерживаться правил кодирования PEP8. У меня есть посылка под названием main, Внутри упаковки есть модуль под названием time, который имеет класс под названием Time внутри. Теперь у меня возникли проблемы с поиском подходящего имени для моего фактического экземпляра, потому что time, который, как правило, мой выбор, уже занят модулем, и, кажется, происходит конфликт имен, если я назову его таким образом.

from main.time import Time

time = Time()
...
if time.status == main.time.STOPPED

Может быть, я также поместил константу в неправильный модуль, но я подумал, что было бы лучше, чтобы мои константы были в том месте, где они принадлежат. Это константа, используемая в моем классе Timemain модуль), поэтому я могу убедиться, что я не смешиваю его с другой константой STOPPED используется для движения игрока. К сожалению я получаю AttributeError: 'function' object has no attribute 'time',

Каково было бы лучшее решение здесь? Переименуйте константы в TIME_STOPPED а также PLAYER_STOPPED и положить их в модуль констант? Именование моей переменной экземпляра my_time или же time_ или что-то вроде этого не совсем то, что я хотел бы сделать. Что такое Pythonic?

1 ответ

Решение

Используя имя time это плохой выбор, не только потому, что у вас уже есть модуль с именем time, но также потому, что есть стандартный библиотечный модуль с именем time,

В любом случае, это на самом деле не ваша проблема (возможно, конфликт с модулем STL, но вы не показываете достаточно кода). Ошибка AttributeError: 'function' object has no attribute 'time' Значит это mainmain.time) это функция, а не модуль. Ваша линия time = Time() не является причиной этого, но другой объект функции называется main внутри вашего исполняемого файла.

Другие вопросы по тегам