Как говорится в документации, перечисление представляет собой набор символических имен (участников), привязанных к уникальным значениям константа. PEP8 говорит, что константы обычно называются UPPER_CASE
, следует ли использовать эту нотацию в Python 3.4 enums? Если да, то почему в примерах в документах используется lower_case
?
Должно ли 3,4 перечисления использовать UPPER_CASE_WITH_UNDERSCORES?
Ответ 1
Обновить
BDFL (Доброжелательная Dictator For Life) говорил, и Enum documentation
была изменена, чтобы отразить все имена элементов верхнего регистра.
Примеры в [предыдущих] документах строчные, в первую очередь потому, что один из ранее существующих модулей, основанных на Enum, использовался в нижнем регистре (или, по крайней мере, его автор;).
Мое использование enum обычно было примерно таким:
class SomeEnum(Enum):
... = 1
... = 2
... = 3
globals().update(SomeEnum.__members__)
который эффективно помещает все члены в пространство имен модуля.
Поэтому я бы сказал, какой стиль вам удобнее - но выбирайте стиль и будьте последовательны.
Ответ 2
Я думаю, что они не UPPER_CASE, потому что, это просто странно, когда это так. Поскольку вы можете получить доступ только к перечислениям через класс (например, my_enum.VALUE
), это выглядит странно, если члены капитализируются. В C члены перечисления входят в пространство имен модулей, поэтому оно не выглядит странным (для меня), когда члены капитализируются, в использовании:
typedef enum {OFF, ON} lightswitch;
lightswitch bathroomLight = ON;
Но в Python вы получаете доступ к ним через класс перечисления, который вы создаете, и выглядит странно, чтобы перейти от имен ClassStyle к ALL_CAPS.
class Lightswitch(Enum):
OFF = 0
ON = 1
# isn't that weird?
my_light = Lightswitch.OFF
В нижней строке, я думаю, это просто эстетично. Однако я ошибался, и я понимаю, что это только мое мнение.
Ответ 3
Когда вы сомневаетесь в стиле, я обычно откладываю стиль, используемый в стандартном библиотечном коде, и примеры из официальной документации. Это мешает мне тратить время на произвольные решения.
Итак, в этом случае я рекомендую использовать нижний регистр, например, имена переменных.