我想创建一个python单例类,以便在程序打开后代码中的其他任何地方调用该类时,该类的实例完全相同。
我试图找到单例示例,并从链接中找到了一个:https://wikidocs.net/3693
class Singleton(object):
_instance = None
def __new__(class_, *args, **kwargs):
if not isinstance(class_._instance, class_):
class_._instance = object.__new__(class_, *args, **kwargs)
return class_._instance
然后像这样测试
class Test(Singleton):
def __init__(self, name=None):
print(name)
test1 = Test('a')
期望显示初始化时给出的名称 但这给了我一个错误
TypeError Traceback (most recent call last)
<ipython-input-55-f3383e846037> in <module>()
----> 1 test1 = Test('a')
<ipython-input-33-222ac7a13884> in __new__(class_, *args, **kwargs)
27 def __new__(class_, *args, **kwargs):
28 if not isinstance(class_._instance, class_):
---> 29 class_._instance = object.__new__(class_, *args, **kwargs)
30 return class_._instance
TypeError: object() takes no parameters
但是当我尝试这个时,这个成功了
Test() # with no prarameter
test1 = Test('a') # this prints 'a' without error
我想知道如何解决这个问题。否则,当我启动程序时,我必须在开始时初始化不带参数。
我想获取参数的原因是,当参数在某个时候更改时,我想将更改的信息应用于调用此类的所有位置。
炎炎设计
相关分类