SIngleton类不保留值

时间:2014-01-15 09:24:59

标签: python singleton

首先,我想说的是我对Python编程很新,因此我解决问题的方法可能不正确,如果是这样,请告诉我

我正在尝试使用Singleton类在我的代码中存储配置参数,并在需要时使用它。我遇到一个问题,即初始创建中存储在Singleton中的数据不会保留在对Object的后续调用中。

也许我创建Singleton对象的方式不正确,但我正在关注SO上的代码示例。

首先是我的Singleton类

class Config(object):

    __instance = None

    dbserver = ""

    def __new__(cls):
        if cls.__instance == None:
            __instance = object.__new__(cls)
            __instance.name = "Configuration Object"
        return __instance

这是我最初创建的Singleton实例

configurator = Config()
configurator.dbserver = dbserver

然后我执行以下操作,dbserver属性返回空字符串。

configurator = Config()
print configurator.dbserver

感谢您抽出时间阅读。

1 个答案:

答案 0 :(得分:5)

您似乎没有将局部变量__instance分配给类变量cls.__instance

但是,如果你只是这样做来存储变量,我不知道为什么你需要一个实例。只需将它们直接存储在类中 - 它本身就是Python中的第一类对象 - 甚至可以使用更像Pythonic的模块。

修改

使用类本身不会导致每次重新运行代码:类级别的代码仅在类定义时执行,这在首次导入时发生。

但是由于类必须存在于某个模块(文件)中,因此您可以轻松地将所有代码直接放在模块中,并将其导入到您需要的位置。同样,模块级别的代码仅在首次导入时执行。