1

以下を含む 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 への変更を永続化する方法に関する提案は大歓迎です?..

4

0 に答える 0