SIngleton类不保留值

Dev*_*er0 0 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
Run Code Online (Sandbox Code Playgroud)

这是我最初创建的Singleton实例

configurator = Config()
configurator.dbserver = dbserver
Run Code Online (Sandbox Code Playgroud)

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

configurator = Config()
print configurator.dbserver
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间阅读.

Dan*_*man 5

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

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

编辑

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

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