Как назвать переменные экземпляра в Python?
Я стараюсь придерживаться правил кодирования PEP8. У меня есть посылка под названием main
, Внутри упаковки есть модуль под названием time
, который имеет класс под названием Time
внутри. Теперь у меня возникли проблемы с поиском подходящего имени для моего фактического экземпляра, потому что time
, который, как правило, мой выбор, уже занят модулем, и, кажется, происходит конфликт имен, если я назову его таким образом.
from main.time import Time
time = Time()
...
if time.status == main.time.STOPPED
Может быть, я также поместил константу в неправильный модуль, но я подумал, что было бы лучше, чтобы мои константы были в том месте, где они принадлежат. Это константа, используемая в моем классе Time
(и main
модуль), поэтому я могу убедиться, что я не смешиваю его с другой константой 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'
Значит это main
(в main.time
) это функция, а не модуль. Ваша линия time = Time()
не является причиной этого, но другой объект функции называется main
внутри вашего исполняемого файла.