- 差分 を表示
- ソース を表示
- Python/列挙型 へ行く。
1: 2019-05-26 (日) 01:56:40 njf | 現: 2019-05-26 (日) 23:02:18 njf | ||
---|---|---|---|
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] |
- Python/列挙型 のバックアップ一覧
- Python/列挙型 のバックアップの現在との差分(No. All)
- 1: 2019-05-26 (日) 01:56:40 njf
- 2: 2019-05-26 (日) 02:07:15 njf
ぺージ情報 | |
---|---|
ぺージ名 : | Python/列挙型 |
ページ別名 : | 未設定 |
ページ作成 : | njf |
閲覧可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
編集可 | |
グループ : | すべての訪問者 |
ユーザー : | すべての訪問者 |
Counter: 3101,
today: 4,
yesterday: 0