首先,我想说的是我对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
感谢您抽出时间阅读。
答案 0 :(得分:5)
您似乎没有将局部变量__instance
分配给类变量cls.__instance
。
但是,如果你只是这样做来存储变量,我不知道为什么你需要一个实例。只需将它们直接存储在类中 - 它本身就是Python中的第一类对象 - 甚至可以使用更像Pythonic的模块。
修改强>
使用类本身不会导致每次重新运行代码:类级别的代码仅在类定义时执行,这在首次导入时发生。
但是由于类必须存在于某个模块(文件)中,因此您可以轻松地将所有代码直接放在模块中,并将其导入到您需要的位置。同样,模块级别的代码仅在首次导入时执行。