enumをつかうとなにがうれしいの
pythonでレスポンスコードのクラスを作ったとき、
下記2つのprintの結果は同じだけど、enum使うとなにがうれしいんかな?って。
①enumを使う場合
②enumを使わない場合
①enumを使う場合
from enum import Enum class ResponseCode(Enum): OK = 200 INPUT_ERROR = 400 SERVER_ERROR = 500 print(ResponseCode.SERVER_ERROR.value) # 500 が表示される
②enumを使わない場合
class ResponseCode: OK = 200 INPUT_ERROR = 400 SERVER_ERROR = 500 print(ResponseCode.SERVER_ERROR) # 500 が表示される
めも
・一般的には、定数扱いになるから安心。(pythonは定数が存在しないからならないが。大体の言語はなるらしい)
・上記例で言えば、ResponseCode「に関して列挙される」ということがわかりやすい。OKとか単体だとなにがおっけーだよ!って思うし。
・型指定をかけやすかったりする。100個の定数のうちのどれかを引数にとる関数の型を指定なら、Enumで定義しておけばクラス名で済む。が、定数定義してると100個の定数を全部orでつないで型指定することになる。しかもpythonには定数定義すらない(大文字で定義することで明示的にすることはできる)。そうなるとどこで書き換えられるかわからんから、基本的にグローバル空間に変数は置かない方がいい。
なるほどね(・3・)
ほかにもいろいろあるだろうけど、なんとなく腹落ちした(・3・)