0
点赞
收藏
分享

微信扫一扫

将类变为单例模式的装饰器

caoxingyu 2022-02-08 阅读 70
单例模式
import threading
from functools import wraps


def singleton(cls):
    lock_ = threading.Lock()

    @wraps(cls)
    def wrapper(*args, **kwargs):
        if not hasattr(cls, "_instance"):
            with lock_:
                if not hasattr(cls, "_instance"):
                    cls._instance = cls(*args, **kwargs)
        return cls._instance

    return wrapper

# 使用说明
@singleton
class Lei(object):
	pass
举报

相关推荐

0 条评论