- 論壇徽章:
- 0
|
>>> def singleton(cls):
... instances = {}
... def _singleton(*args, **kw):
... print "------" + str(instances) + "----------"
... if cls not in instances:
... instances[cls] = cls(*args, **kw)
... return instances[cls]
... return _singleton
...
>>> @singleton
... class MyClass(object):
... a = 1
... def __init__(self, x=0):
... self.x = x
...
>>>
>>> a=MyClass()
------{}----------
>>>
>>> a=MyClass()
------{<class '__main__.MyClass'>: <__main__.MyClass object at 0x7f4a1b3b23d0>}----------
>>>
>>> a=MyClass()
------{<class '__main__.MyClass'>: <__main__.MyClass object at 0x7f4a1b3b23d0>}----------
這種方式雖然實(shí)現(xiàn)了單例,,但是想不通 instances看起來像”全局變量“似的。。
難道每一次調(diào)用MyClass()
不是相當(dāng)于singleton(MyClass) 么?
如果是,,那instances不是每次都會被重置為{}么?
可能我對裝飾器理解的不是很對,,,求python 大牛,,解釋~~~ |
|