Python列挙【一】
5865 ワード
1.列挙の定義まず、enumモジュールをインポートするように定義します. 列挙定義はclassキーワードでEnumクラスを継承する. 列挙されたclassと定義クラスを定義するclassには、「次の博文は共有し続ける」という違いがあります. サンプルコード:上のコードは、色の列挙Colorを定義しています. 色には7人のメンバーが列挙する、それぞれColorである.red、Color.orange、Color.yellowなど. 各メンバーには、それぞれの名前と値があります.Color.redメンバーの名前は:red、値は:1です. 各メンバーのデータ型は、その属する列挙である.[*注:classで定義されたクラスは、実際にはタイプです]
1.2デフォルトでは、メンバー値によって同じ値が許可されます.ただし、同じ値の2つのメンバーは、2番目のメンバーの名前が最初のメンバーの別名とみなされます.
1.3同じ値のメンバーが列挙されている場合、値から列挙されたメンバーを取得する場合、最初のメンバーのみが取得されます.
1.4列挙の定義を制限する場合、同じ値のメンバーは定義できません.アクセサリー@unique【uniqueモジュールをインポートする】を使用できます.
2.列挙取値
2.1メンバー名によるメンバーの取得
3.反復器
3.1列挙は反復器をサポートし、列挙メンバーを巡回することができる
3.2値の重複するメンバーを列挙する場合、列挙をループするときに値の重複するメンバーの最初のメンバーのみが取得されます.
3.3値を繰り返すメンバーも遍歴する場合は、列挙する特殊な属性__を使用します.members__
('indigo', )、('purple', )、('red_alias', )
4.列挙比較
4.1メンバーの列挙同一性比較
4.2列挙メンバーの等値比較
4.3列挙メンバーのサイズ比較ができない
転載先:https://www.cnblogs.com/ucos/p/5896861.html
from enum import Enum
class Color(Enum):
red = 1
orange = 2
yellow = 3
green = 4
blue = 5
indigo = 6
purple = 7
コード解析:1.1 ,
from enum import Enum
class Color(Enum):
red = 1
red = 2
上のコードは、実行できません.ヒントエラー:TypeError:Attempted to reuse key:'red'1.2デフォルトでは、メンバー値によって同じ値が許可されます.ただし、同じ値の2つのメンバーは、2番目のメンバーの名前が最初のメンバーの別名とみなされます.
from enum import Enum
class Color(Enum):
red = 1
red_alias = 1
メンバー・コールredとColorred_aliasが同じ値を持つ場合、メンバーColor.red_aliasの名前red_aliasはメンバーとして扱われていますred名redの別名.1.3同じ値のメンバーが列挙されている場合、値から列挙されたメンバーを取得する場合、最初のメンバーのみが取得されます.
from enum import Enum
class Color(Enum):
red = 1
red_alias = 1
print(Color(1))
出力結果は:Color.red1.4列挙の定義を制限する場合、同じ値のメンバーは定義できません.アクセサリー@unique【uniqueモジュールをインポートする】を使用できます.
from enum import Enum, unique
@unique
class Color(Enum):
red = 1
red_alias = 1
再実行するとエラーが表示されます:ValueError:duplicate values found in:red_alias -> red2.列挙取値
2.1メンバー名によるメンバーの取得
Color['red']
2.2メンバー値によるメンバーの取得Color(2)
2.3メンバーによる名前と値の取得red_member = Color.red
red_member.name
red_member.value
3.反復器
3.1列挙は反復器をサポートし、列挙メンバーを巡回することができる
for color in Color:
print(color)
出力結果は、列挙されたすべてのメンバーです.Color.red、Color.orange、Color.yellow、Color.green、Color.blue、Color.indigo、Color.purple.3.2値の重複するメンバーを列挙する場合、列挙をループするときに値の重複するメンバーの最初のメンバーのみが取得されます.
from enum import Enum
class Color(Enum):
red = 1
orange = 2
yellow = 3
green = 4
blue = 5
indigo = 6
purple = 7
red_alias = 1
for color in Color:
print(color)
出力結果は:Color.red、Color.orange、Color.yellow、Color.green、Color.blue、Color.indigo、Color.purple.でもコールred_aliasは出力結果に現れなかった.3.3値を繰り返すメンバーも遍歴する場合は、列挙する特殊な属性__を使用します.members__
from enum import Enum
class Color(Enum):
red = 1
orange = 2
yellow = 3
green = 4
blue = 5
indigo = 6
purple = 7
red_alias = 1
for color in Color.__members__.items():
print(color)
出力結果:('red',)、('orange',)、('yellow',)、('green',)、('blue',)、('indigo', )、('purple', )、('red_alias', )
4.列挙比較
4.1メンバーの列挙同一性比較
Color.red is Color.red
出力結果:TrueColor.red is not Color.blue
出力結果:True4.2列挙メンバーの等値比較
Color.blue == Color.red
出力結果:FalseColor.blue != Color.red
出力結果:True4.3列挙メンバーのサイズ比較ができない
Color.red < Color.blue
出力結果エラー:TypeError:unorderable types:Color()転載先:https://www.cnblogs.com/ucos/p/5896861.html