当前位置: 首页 > backend >正文

python中的单例与实例

单例(Singleton)

想象一下,你有一个非常特别的玩具,这个玩具在整个玩具店里只有一个,而且不会再生产第二个。无论谁去这家玩具店,他们拿到的都是同一个玩具。这个玩具就是“单例”。

在Python中,None 就是这样一个特别的“玩具”。无论你在程序的哪个地方写 None,它都是同一个东西,不会有两个不同的 None。这就像是你去任何地方,提到那个特别的玩具,大家都知道你说的是同一个。

例子
a = None
b = Noneprint(a is b)  # 输出: True

这里,ab 都是指向同一个 None,所以 a is bTrue


实例(Instance)

现在,想象你有一个玩具工厂,这个工厂可以生产很多不同的玩具。每个玩具都是独一无二的,有自己的颜色、形状和功能。这些玩具就是“实例”。

在Python中,类就像是那个玩具工厂,而实例就是从工厂里生产出来的玩具。每个实例都有自己的属性和方法,就像每个玩具都有自己的颜色和功能。

例子
class Toy:def __init__(self, color):self.color = colortoy1 = Toy("red")
toy2 = Toy("blue")print(toy1.color)  # 输出: red
print(toy2.color)  # 输出: blueprint(toy1 is toy2)  # 输出: False

这里,toy1toy2Toy 类的两个不同实例,它们有自己的颜色属性。因为它们是不同的玩具,所以 toy1 is toy2False


为什么 None 是单例

None 是Python中的一个特殊对象,用来表示“没有东西”或者“空”。为了方便和高效,Python决定在整个程序中只用一个 None。这样,无论你在程序的哪个地方用到 None,它都是同一个东西,不会混淆。


检查变量是否为 None

因为 None 是单例,所以你可以用 is 来检查一个变量是不是 None。这就像检查一个玩具是不是那个特别的玩具,直接比较它们是不是同一个东西。

例子
a = Noneprint(a is None)  # 输出: True
print(a is not None)  # 输出: False

这里,a is None 检查 a 是不是那个特别的 None,结果是 True


总结

  • 单例(Singleton):就像一个特别的玩具,整个程序中只有一个,None 就是这样的单例。
  • 实例(Instance):就像从工厂里生产出来的玩具,每个都有自己的特点,从类里创建出来的对象就是实例。
  • 检查 None:因为 None 是单例,用 is 来检查变量是不是 None 是最直接的方式。
http://www.xdnf.cn/news/5869.html

相关文章:

  • Python基础学习-Day23
  • SQL server数据库实现远程跨服务器定时同步传输数据
  • containerd 之使用 ctr 和 runc 进行底层容器操作与管理
  • mysql5.7安装
  • 视频监控汇聚平台EasyCVR安防监控系统:在应用中,机房及监控系统施工如何有效实现防雷?
  • huggingface transformers中Dataset是一种什么数据类型
  • spaCy基础入门
  • transforms.Compose()
  • ARFoundation 图片识别,切换图片克隆不同的追踪模型
  • Rodrigues旋转公式-绕任意轴旋转
  • Excel宏和VBA的详细分步指南
  • Linux系统:文件系统前言,详解CHSLBA地址
  • 如何创建maven项目
  • java之网络编程
  • uniapp(vue3)动态计算swiper高度封装自定义hook
  • SD-HOST Controller design-----SD CLK 设计
  • 深度学习之优化器【从梯度下降到自适应学习率算法】(pytorch版)
  • 华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
  • 微服务的“导航系统”:使用Spring Cloud Eureka实现服务注册与发现
  • 销售具备的能力有哪些
  • JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?
  • Python中元组(Tuple)使用详解和注意事项
  • Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
  • 拓扑排序+dp
  • STM32-DMA数据转运(8)
  • 直接在Excel中用Python Matplotlib/Seaborn/Plotly......
  • Linux 内核网络协议栈:从 Socket 类型到协议注册的深度解析
  • 思迈特软件携手天阳科技,打造ChatBI金融智能分析新标杆
  • 适应性神经树:当深度学习遇上决策树的“生长法则”
  • Spring Boot 整合 Redis 实战