Python语言可使用类修饰符实现单例。
def singleton(cls):
_instance = None
def wrapper():
nonlocal _instance
if _instance is None:
_instance = cls()
return _instance
return wrapper
@singleton
class cls1:
def __init__(self):
pass
a=cls1()
b=cls1()
print(a is b)
输出结果为:
True
修饰符(decorator)
以下引自Python documents。
A function returning another function, usually applied as a function transformation using the @wrapper syntax.
The decorator syntax is merely syntactic sugar, the following two function definitions are semantically equivalent:
def f(...):
...
f = staticmethod(f)
@staticmethod
def f(...):
...