MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Python標準ライブラリのFlagがシンプルで使いやすいという話


Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ

目次

はじめに

Pythonの標準モジュールのenumの中に、

Flagというクラスがあるのですが、

docs.python.org

これが、結構シンプルで使いやすかったので、

かんたんに使い方をまとめておきたいと思います。

Python標準ライブラリのFlagの使い方

下記がかんたんなFlagの使い方です。

特徴的なのは、Flagを継承したクラスを作成し、

そのプロパティをauto()で自動的にナンバリングできることと、

複数のプロパティをグルーピングして、

inを使って、かんたんにFlagを状態をチェックすることができることです。

In [3]: from enum import Flag, auto

In [4]: class Functions(Flag):
   ...:     FUNC1=auto()
   ...:     FUNC2=auto()
   ...:     FUNC3=auto()
   ...:     FUNC12=FUNC1|FUNC2
   ...:     ALL=FUNC1|FUNC2|FUNC3
   ...:

In [5]: Functions.FUNC1 in Functions.FUNC12
Out[5]: True

In [6]: Functions.FUNC2 in Functions.FUNC12
Out[6]: True

In [7]: Functions.FUNC3 in Functions.FUNC12
Out[7]: False

In [8]: Functions.FUNC12 in Functions.ALL
Out[8]: True

In [9]: Functions.ALL in Functions.FUNC12
Out[9]: False

 

enumモジュールの中には、IntFlag, StrFlagなどもありますが、

特段理由がない場合は、通常のFlagを使うように勧められています。

docs.python.org

参考資料

qiita.com

ohke.hateblo.jp

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com