40

ドキュメントにあるように、列挙は一意の定数値にバインドされた記号名 (メンバー) のセットです。PEP8では、定数の名前は通常 と書かれていますが、UPPER_CASEPython 3.4 の列挙型でこの表記法を使用する必要がありますか? はいの場合、ドキュメントの例で が使用されているのはなぜlower_caseですか?

4

3 に答える 3

25

アップデート

BDFL (Benevolent Dictator For Life)が発言し、Enum documentationすべての大文字のメンバー名を反映するように変更されました。


[前の] ドキュメントの例が小文字になっているのは、主に、Enum のベースとなっている既存のモジュールの 1 つが小文字を使用していたためです (または、少なくともその作成者は ; を使用していました)。

私の列挙型の使用法は、通常、次のようなものでした。

class SomeEnum(Enum):
    ... = 1
    ... = 2
    ... = 3
globals().update(SomeEnum.__members__)

これにより、すべてのメンバーがモジュールの名前空間に効果的に配置されます。

ですから、どちらのスタイルがあなたにとってより快適であるかと言いますが、スタイルを選んで一貫性を持たせてください.

于 2014-01-26T04:25:14.210 に答える
8

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

要するに、それは単なる美学だと思います。私は以前に間違っていましたが、これは私の意見にすぎないことを理解しています.

于 2014-01-26T03:32:49.463 に答える