| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- """
- 设计模式 - 单例模式(让一个类只能创建唯一的实例)
- """
- from functools import wraps
- def singleton(cls):
- instances = {}
- @wraps(cls)
- def wrapper(*args, **kwargs):
- if cls not in instances:
- instances[cls] = cls(*args, **kwargs)
- return instances[cls]
- return wrapper
- @singleton
- class President():
- """总统(单例类)"""
- def __init__(self, name):
- self.name = name
- def main():
- p1 = President("王大锤")
- p2 = President("奥巴马")
- print(p1.name)
- print(p2.name)
- print(p1 == p2)
- print(p1 is p2)
- print('-' * 30)
- # 取消装饰器
- President2 = President.__wrapped__
- p2 = President2("奥巴马")
- print(p1.name)
- print(p2.name)
- print(p1 == p2)
- print(p1 is p2)
- if __name__ == '__main__':
- main()
|