以下を含む config.py シングルトン モジュールがあります。
class Singleton:
""""""
def __init__(self, name, bases, namespace):
self._obj=type( name, bases, namespace )()
def __call__(self):
return self._obj
class ConfigObj(object):
""""""
__metaclass__ = Singleton
def __init__(self):
""""""
self._dataOne = '0010'
self._dataTwo = None
print self._dataOne
def setData(self,val)
""""""
self._dataTwo = val
def getData(self)
""""""
return self._dataTwo
def Config():
"""Create instance of config singleton"""
ConfigObj()
def ConfigSetData(val):
"""Set config data"""
ConfigObj().setData(val)
def ConfigGetData():
"""Get config data"""
return ConfigObj().getData()
以下を含む suite.py モジュールがあります。
Config()
ConfigSetData('22')
print ConfigGetData()
実行すると、シングルトン 'ConfigObj' が期待どおりに作成され、シングルトン オブジェクト ID が保持されます。デバッグ中に、self._dataTwo が再割り当てされたように見えます。
ただし、ConfigGetData() func が呼び出されると、self._dataTwo の値がまだ None として割り当てられていることが示され、print ステートメントは「nontype」例外で失敗します。
self._dataTwo への変更を永続化する方法に関する提案は大歓迎です?..