ページへ戻る

− Links

 印刷 

Python​/列挙型 のバックアップの現在との差分(No.1) :: NJF Wiki

xpwiki:Python/列挙型 のバックアップの現在との差分(No.1)

  Next »[4]
1: 2019-05-26 (日) 01:56:40 njf[5] ソース[6] バックアップ No.1 を復元して編集[7] 現: 2019-05-26 (日) 22:02:18 njf[5] ソース[8] 編集[9]
Line 1: Line 1:
 +*基本 [#oda99e39]
 +
Pythonの列挙型enumは何かひとまとまりの定数を定義するときに便利な型で、Python3.4から導入されました。 Pythonの列挙型enumは何かひとまとまりの定数を定義するときに便利な型で、Python3.4から導入されました。
-*基本 [#oda99e39] +例えば、ゲームのプログラムで今どの画面かを識別するために以下のような変数を定義したとします。
- +
-例えば、ゲームで今どの画面かを識別するために以下のような定数を定義したとします。+
 SCREEN_TITLE = 1 #タイトル画面  SCREEN_TITLE = 1 #タイトル画面
Line 16: Line 16:
 from enum import Enum  from enum import Enum
 + 
 class Screen(Enum):  class Screen(Enum):
     TITLE = 1      TITLE = 1
Line 40: Line 40:
Enumは他の型の値と直接比較できないので注意してください。 Enumは他の型の値と直接比較できないので注意してください。
 +めんどうなようですが、こうなっているとせっかく定義したEnum型を使わずに手で直接値を指定してしまうという、いわゆるマジックナンバーの問題をある程度予防してくれるというメリットがあります。
-もし比較したいなら、後述のIntEum型なら整数との比較が可能です。+必要であれば、後述のIntEum型なら整数との比較が可能です。
この記事では数値で定義しましたが、文字列で定義することも可能です。 この記事では数値で定義しましたが、文字列で定義することも可能です。
Line 100: Line 101:
 from enum import Enum, auto  from enum import Enum, auto
 + 
 class Screen(Enum):  class Screen(Enum):
     TITLE = auto()      TITLE = auto()
Line 158: Line 159:
   TEST3 = auto()    TEST3 = auto()
   TEST2_ALT = TEST2    TEST2_ALT = TEST2
 + 
 print(Test.TEST2_ALT,Test.TEST2_ALT.value)  print(Test.TEST2_ALT,Test.TEST2_ALT.value)
Line 177: Line 178:
Enumにビット演算子を適用可能にしてフラグとして使いやすくした物です。 Enumにビット演算子を適用可能にしてフラグとして使いやすくした物です。
-ここに書くと長くなるので後日ページを分けて説明します。+ここに書くと長くなるのでページを分けて[[Python/FlagとIntFlag]]で説明しています。
*まとめ [#a8d5981a] *まとめ [#a8d5981a]
  Next »[4]