当前位置: 首页 > 科技观察

Python单例模式,你需要知道的4个方法

时间:2023-03-14 12:23:23 科技观察

单例模式(SingletonPattern)是一种常用的软件设计模式,这种模式的主要目的是保证某个类只有一个实例存在。当您只想在整个系统中出现一个类的一个实例时,单例对象会派上用场。例如,一个服务器程序的配置信息保存在一个文件中,客户端通过一个AppConfig类来读取配置文件的信息。如果程序运行过程中有很多地方需要用到配置文件的内容,也就是说很多地方需要创建AppConfig对象的实例,这样就会导致系统中有多个AppConfig实例对象,会严重浪费内存。资源,特别是如果配置文件有很多内容。实际上,对于AppConfig这样的类,我们希望在程序运行过程中只有一个实例对象存在。在Python中,我们可以使用多种方法来实现单例模式:1.使用模块可以引用自定义的CRUD组件站点对象,这是一种显而易见的简单盈利模式。其实Python模块是天生的单例模式,因为第一次导入模块时,会生成.pyc文件,第二次导入时,直接加载.pyc文件,不执行再次模块代码。因此,我们只需要在一个模块中定义相关的函数和数据,就可以得到一个单例对象。如果我们真的想要一个单例类,可以考虑这样做:将上面的代码保存在文件mysingleton.py中,然后这样使用:2.使用new加锁3.使用类实现单例模式:A。不能支持多线程的单例模式,但是我们尝试添加多线程结果:b.解决以上问题,实现支持多线程的单列模式:结果:问题:实例的创建只能通过调用Singleton.instance()来实现,不能用Singleton()来实现。四、基于元类方法的实现1、对象是由一个类创建的。创建对象时,自动执行类的__init__方法,object()执行类的__call__方法。2.类是按类型创建的,创建类时会创建类型的__init__方法自动执行,class()执行类型的__call__方法(类的__new__方法,类的__init__方法)实现单例: