python单例模式

设计模式:单例模式(Singleton Pattern)。单例模式确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。

python 复制代码
class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
            # 这里可以添加初始化代码
        return cls._instance

# 使用Singleton类
instance1 = Singleton()
instance2 = Singleton()

# instance1 和 instance2 是同一个实例
assert instance1 is instance2

在这个例子中:

cls指的是类Singleton本身。

super().new (cls)调用父类(在这个例子中是object类)的__new__方法来创建类Singleton的一个新实例。这是因为__new__是在创建实例之前被调用的特殊方法,它实际上负责创建实例。

cls._instance用于存储这个唯一的实例。如果cls._instance已经存在,即之前已经创建过实例,那么__new__方法将返回这个已存在的实例而不是创建一个新的实例。

通过以上方式,无论你尝试创建多少次Singleton类的实例,所有的变量都会指向同一个实例。这就是单例模式的核心特点。
以上示例由ChatGPT生成

相关推荐
逻极2 分钟前
Scikit-learn 入门指南:从零到一掌握机器学习经典库(2025 最新版)
人工智能·python·机器学习·ai·scikit-learn·agent
麦麦鸡腿堡7 分钟前
Java_HashMap底层机制与原码解读
java·开发语言·jvm
草莓熊Lotso15 分钟前
C++ 抽象类与多态原理深度解析:从纯虚函数到虚表机制(附高频面试题)
java·运维·服务器·开发语言·c++·人工智能·笔记
再玩一会儿看代码21 分钟前
Ken的Java学习之路——Java中关于面向对象
java·开发语言·经验分享·python·学习
迦蓝叶24 分钟前
通过 HelloWorld 深入剖析 JVM 启动过程
java·开发语言·jvm·aot·启动过程·helloword·leyden
Q_Q51100828527 分钟前
python+django/flask的美食交流宣传系统vue
spring boot·python·pycharm·django·flask·node.js·php
Q_Q51100828530 分钟前
python+django/flask+vue的基层智能化人员调度系统pycharm-计算机毕业设计
spring boot·python·pycharm·django·flask·node.js
m0_5656111335 分钟前
Java Stream流操作全解析
java·开发语言·算法
_OP_CHEN1 小时前
从零开始的Qt开发指南:(三)信号与槽的概念与使用
开发语言·c++·qt·前端开发·qt creator·信号与槽·gui开发
@老蝴2 小时前
Java EE - 线程安全的产生及解决方法
java·开发语言·java-ee