Python で定数(として扱う変数)を定義するときは、定数名をすべて大文字(+アンダースコア)で構成するのが慣例となっています。 このあたりの標準的な命名規則は PEP8 に記載されています。
Constants are usually defined on a module level and written in all capital letters with underscores separating words. Examples include MAX_OVERFLOW and TOTAL.
MAX_FILE_NUM = 20
print(MAX_FILE_NUM)
クラス定数も下記のようにして同様に定義することができます。
class MyClass:
NAME = 'maku'
AGE = 100
def show_info(self):
print(self.NAME)
print(self.AGE)
下記のような、定数を扱うためのクラスが Python Recipes で紹介されています(Python3 の構文に合わせて若干書き換えてます)。
"""
Constant types in Python.
"""
class _const:
class ConstError(TypeError):
pass
def __setattr__(self, name, value):
if name in self.__dict__:
raise self.ConstError("Can't rebind const (%s)" % name)
self.__dict__[name] = value
import sys
sys.modules[__name__]=_const()
元ネタは書籍の『Python Cookbook』ですね。 この定数モジュールは下記のように定数の入れ物として使用します。
import const
const.FOO = 100
const.BAR = 'Hello'
下記のように、同じ名前の定数に再代入しようとすると、ランタイムエラー (独自定義の const.ConstError) が発生して、プログラムが停止します。
const.FOO = 100
const.FOO = 200 # const.ConstError: Can't rebind const (HOGE)