我在第一篇回复中发现了这个单例实现:http://blog.amir.rachum.com/post/21850841339/implementing-the-singleton-pattern-in-python。
def singleton(cls):
return cls()
@singleton
class Foo(object):
def bar(self):
pass
if __name__ == '__main__':
print id(Foo)
print id(Foo)
但是我不理解其中的运作原理,装饰器返回一个类实例,但为什么每次都是相同的实例呢?
单例模式
是一种设计模式,它限制了一个类的实例化只能创建一个对象。当系统中需要协调操作的唯一对象时非常有用... 比如日志记录,因为你希望在整个应用程序中记录到同一个文件中。 - avasal