昨天我碰巧看了下面的代码(我无法保证这是一个有效的代码):
def singleton(cls, *args, **kw):
instances = {}
def getinstance():
if cls not in instances:
instances[cls] = cls(*args, **kw)
return instances[cls]
return getinstance
@singleton
class MyClass:
...
看起来函数singleton
旨在装饰类MyClass
。我理解简单和标准的装饰器,它作为一个函数,装饰一个函数。像这样:
def bold(func):
def wrapper():
return '<b>'+func()+'</b>'
return wrapper
@bold
def test():
return 'This is a test'
但我无法真正了解函数装饰类的工作原理。任何人都可以提供更详细的例子吗?