今日も見に来てくださって、ありがとうございます。石川さんです。
今回は、Pythonプログラムでコンスタント値を扱うのはどうするのかなぁ、と調べていて発見した、Enumを紹介したいと思います。
ソースコード
import enum class PaperSize(tuple, enum.Enum): # Paper size A0 = (841, 1189) A1 = (594, 841) A2 = (420, 594) A3 = (297, 420) A4 = (210, 297) A5 = (148, 210) def __str__(self): return self.name
このコードを例えばconstants.pyのようなファイルに保存することで、モジュールが作成できます。利用するためには、
from constants import *
のようにすればよいでしょう。
※追記:この、インポートで*を使うのはよく見かけますが、バッドプラクティスだそうです。名前空間を汚染するから、というのがその理由です。なるほど。きちんと名前を指定しましょう。
さて、標準モジュールにあったenum.Enumですが、ちゃんとドキュメントがありました。読んでもイマイチわからないので(笑)、とりあえず使い方ですね。
In [69]: for paper in PaperSize: ...: print(paper) ...: A0 A1 A2 A3 A4 A5
このように、イテレータとして使うことができます。
In [70]: PaperSize.A0 Out[70]: <PaperSize.A0: (841, 1189)> In [71]: PaperSize.A0[0], PaperSize.A0[1] Out[71]: (841, 1189)
また、A0、A1といった、それぞれの要素を直接参照することができます。
In [72]: for paper in PaperSize: ...: print(paper.name, paper.value) ...: A0 (841, 1189) A1 (594, 841) A2 (420, 594) A3 (297, 420) A4 (210, 297) A5 (148, 210)
このように「name」「value」といった属性が利用できます。
まとめ
このような、複数の値を保持する必要がある場合は、enumモジュールのEnumを利用できるかも知れませんね。