Pythonで書かれた設定ファイルから値を拾ってくるときに、今は以下のようにしている
value_nameを文字列で渡して、評価可能か見て、関数呼び出し可能か見て、いずれもダメなら2つ目の引数のdefault_valueを返す、みたいな。
def force_get_value(value_name, default_value): try: eval(value_name) except NameError: if callable(default_value): return default_value() else: return default_value else: _value = eval(value_name) if callable(_value): return _value() else: return _value
value_nameを文字列で渡すってあたりがスマートじゃない気がする。組み込みで使えそうな関数とかないんだろうか。
- 2008/02/12追記
djangoの場合はglobal_settings.pyを読み込んだ後にsettings.pyで設定の上書きをしてるのかな。
ならデフォルトの設定ファイルを用意する方法がいいのかやはり。