- 论坛徽章:
- 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>}----------
这种方式虽然实现了单例,,但是想不通 instances看起来像”全局变量“似的。。
难道每一次调用MyClass()
不是相当于singleton(MyClass) 么?
如果是,,那instances不是每次都会被重置为{}么?
可能我对装饰器理解的不是很对,,,求python 大牛,,解释~~~ |
|