通过模块功能实现单例模式

  • 一般说到python实现单例模式,都会想到各种装饰器的途径来构造
  • 装饰器途径构造单例模式参考文档:python装饰器
  • 本文则记录了一种比较新颖的方式来实现单例模式

构建一个singleton模块

#singleton.py
class Singleton:
    def __init__(self):
        self.name = "i'm singleton"
instance = Singleton()
del Singleton  # 把构造函数删除

调用上述模块,

import singleton
print(singleton.instance.name)  # i'm singleton
instance = Singleton() # NameError: name 'Singleton' is not defined

小结

  • Python在module中对类的构造函数进行del操作,来隐藏一个类的构造函数,从而实现单例

讨论

  • 这个module实现单例的方法,对构造器来说也是线程安全的哦
  • 突然想到类里的method想做到线程安全怎么搞,下次发个文章研究下
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。