/
githubmirror
/
Python-100-Days
Обзор
Документация
Войти
/
githubmirror
/
Python-100-Days
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Day31-35/code/example10.py
48 строк
938 B
jackfrued
调整了目录结构
30 янв 2025, 18:25
30 янв 2025, 18:25
3dc3938
Код
Авторство
О чём код?
""" 装饰类的装饰器 - 单例模式 - 一个类只能创建出唯一的对象 上下文语法: __enter__ / __exit__ """ import threading from functools import wraps def singleton(cls): """单例装饰器""" instances = {} lock = threading.Lock() @wraps(cls) def wrapper(*args, **kwargs): if cls not in instances: with lock: if cls not in instances: instances[cls] = cls(*args, **kwargs) return instances[cls] return wrapper @singleton class President(): def __init__(self, name, country): self.name = name self.country = country def __str__(self): return f'{self.country}: {self.name}' def main(): print(President.__name__) p1 = President('特朗普', '美国') p2 = President('奥巴马', '美国') print(p1 == p2) print(p1) print(p2) if __name__ == '__main__': main()