以下の内容はhttps://coublood.hatenablog.com/entry/2025/02/02/150000より取得しました。


Python3の学習 その17 (enum:列挙型)

Python

今回はenum型について。

列挙型を使うと、定数値に名前を定義でき、かつ値とマッピングができるので、かなり便利。

Pythonでもそれは使えます。

>>> import enum
>>> class Prefectures(enum.Enum):
...     HOKKAIDO = 1
...     AOMORI = 2
...     IWATE = 3
...     AKITA = 4
...     MIYAGI = 5
...     YAMAGATA = 6
...     FUKUSHIMA = 7
... 
>>> 

enumの定義は、class定義として、要素はインデントをつけて順番に定義すればOK。

これで定義完了です。

 

enumの中身を見たければ、listで出力可能。

>>> list(Prefectures)
[<Prefectures.HOKKAIDO: 1>, <Prefectures.AOMORI: 2>, <Prefectures.IWATE: 3>, <Prefectures.AKITA: 4>, <Prefectures.MIYAGI: 5>, <Prefectures.YAMAGATA: 6>, <Prefectures.FUKUSHIMA: 7>]

 

そして、各要素の値も表示できますし、以下の属性、

  • name属性で定義名
  • value属性で値

を取得できます。

>>> Prefectures.AOMORI
<Prefectures.AOMORI: 2>
>>> 
>>> miyagi = Prefectures.MIYAGI
>>> miyagi.name
'MIYAGI'
>>> miyagi.value
5

 

ちなみに、連番を振る場合は、enum.auto() という関数を利用することで、簡単に設定できるようです。

>>> import enum
>>> class Prefectures2(enum.Enum):
...     FUKUOKA = enum.auto()
...     NAGASAKI = enum.auto()
...     SAGA = enum.auto()
...     KUMAMOTO = enum.auto()
...     OOITA = enum.auto()
...     MIYAZAKI = enum.auto()
...     KAGOSHIMA = enum.auto()
...     OKINAWA = enum.auto()
... 
>>> list(Prefectures2)
[<Prefectures2.FUKUOKA: 1>, <Prefectures2.NAGASAKI: 2>, <Prefectures2.SAGA: 3>, <Prefectures2.KUMAMOTO: 4>, <Prefectures2.OOITA: 5>, <Prefectures2.MIYAZAKI: 6>, <Prefectures2.KAGOSHIMA: 7>, <Prefectures2.OKINAWA: 8>]
>>> 
>>> Prefectures2.KAGOSHIMA.name
'KAGOSHIMA'
>>> Prefectures2.KAGOSHIMA.value
7

これは普通に便利なので、覚えておいて損はないですね。

 




以上の内容はhttps://coublood.hatenablog.com/entry/2025/02/02/150000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14