Подтвердить что ты не робот

Должно ли 3,4 перечисления использовать UPPER_CASE_WITH_UNDERSCORES?

Как говорится в документации, перечисление представляет собой набор символических имен (участников), привязанных к уникальным значениям константа. PEP8 говорит, что константы обычно называются UPPER_CASE, следует ли использовать эту нотацию в Python 3.4 enums? Если да, то почему в примерах в документах используется lower_case?

4b9b3361

Ответ 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

Когда вы сомневаетесь в стиле, я обычно откладываю стиль, используемый в стандартном библиотечном коде, и примеры из официальной документации. Это мешает мне тратить время на произвольные решения.

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