微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中单例模式的实现-通过闭包函数和魔术方法__new__实现单例模式

1、通过闭包函数实现单例模式:

# 使用闭包函数实现单例
def single(cls,*args,**kwargs):
    instance = {}

    def get_instance():
        if cls not in instance:
            instance[cls] = cls(*args,**kwargs)
        return instance[cls]
    return get_instance


@single
class Apple:
    pass


a = Apple()
b = Apple()
print(id(a))
print(id(b))

2、通过python中魔术方法__new__实现单例模式:

class Single:
    def __new__(cls,**kwargs):
        if not hasattr(cls,'_instance'):
            cls._instance = super(Single,cls).__new__(cls)
        return cls._instance


s1 = Single()
s2 = Single()
print(id(s1))
print(id(s2))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐