Python3 - 单例模式,及其实现方式

本文详细介绍了Python3中的单例模式,包括通过__new__、类方法、装饰器和元类四种方式实现,以及模块级别的单例应用,特别适用于配置文件或全局唯一对象的场景。
摘要由CSDN通过智能技术生成

目录

一、单例介绍

二、使用__new__实现

三、使用类方法(调用创新对象,函数返回原定对象)

四、定义装饰器(有参创建新对象,无参返回原对象)

五、元类实现(有参创建新对象,无参返回原对象)

六、模块实现


 

一、单例介绍

某一个类只有一个实例

Borg Pattern - 共享单例学习

二、使用__new__实现

class MySQLHandler:
    def __new__(cls, *args, **kwargs):
        if not hasattr(cls, "_instance"):
            # 业务逻辑
            cls._instance = super().__new__(cls)
        return cls._instance

 

三、使用类方法(调用创新对象,函数返回原定对象)

import settings
class Mysql:
    __instance = None

    def __init__(self, host, port):
        self.host = host
        self.port = port

    @classmethod
    def singleton(cls):
        if not cls.__instance:
            # 创建类实例存入局部空间
            cls.__instance = cls(settings.IP, settings.PORT)
        return cls.__instance


# 使用init创建实例
obj1 = Mysql('1.1.1.2', 3306)
obj2 =
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值