如何创建基于SingleTon的词典



我想创建一个基于字典的SingleTon。一些简单的例子如:

singleton = SingleTon()
singleton['a'] = 5
print(singleton['a']) #5

我写了一个基本类:

class SingleTonNew():  
_instance = None
def __new__(cls, *args, **kwargs): 
id = threading.get_ident()
if cls._instance is None:
cls._instance = super(SingleTonNew, cls).__new__({})
return cls._instance
def __setattr__(self, key, value):
id = threading.get_ident()
if id in self._instance:
self._instance[id][key] = value
else:
self._instance[id] = {key:value}


def __getattr__(self, item):
id = threading.get_ident()
return self._instance[id][item]

但它不起作用,我该如何实施它。感谢所有回答问题的人。

class Singleton(dict):
def __new__(cls):
if not hasattr(cls, 'instance'):
cls.instance = super(Singleton, cls).__new__(cls)
return cls.instance

singleton1 = Singleton()
singleton2 = Singleton()
singleton1['a'] = 5
print(singleton1 is singleton2)
print(singleton2)

只需从dict继承即可。

输出:

True
{'a': 5}

我这样实现:

class SingleTonNew(dict):  
def __new__(cls):
ident = threading.get_ident()
if not hasattr(cls, 'instance'):
cls._instance = super(SingleTonNew, cls).__new__(cls)
if  ident not in cls._instance:
cls._instance[ident] = super(SingleTonNew, cls).__new__(cls, ident)
return cls._instance[ident]

我现在不知道它是否正确,它是否线程安全?

最新更新