【Python零基础入门篇 · 25】:init和new方法、单例模式

简介: 【Python零基础入门篇 · 25】:init和new方法、单例模式

init和new方法


init其实不是实例化对象后最先调用的方法,最先调用的是new方法。


实例化对象后代码执行的步骤


类名(),实例化对象时,python解释器首先会调用new方法,为对象分配空间,然后再执行init初始化对象。


new方法的作用


  • 在内存中为对象分配空间


  • 返回对象的引用


python解释器获得对象的引用后,将引用作为第一个参数,传递给init方法。

6dba1d7c4f7d426cb9d9ee4d991c801b.png


重写new方法


返回对象引用的方式


  • 父类名.方法名(cls)


  • super().方法名(cls)


5f0b704662b242c8bd8bd3ad47a7f618.png


总结


  • init方法是什么时候被自动调用?实例化的时候。


  • new方法是用来创建对象,new方法是从哪里来的?new方法是从objec中来的。


  • self里面是什么?self代表实例化对象本身,它是new方法创建的,然后发送给init使用。



执行步骤:


一个对象的实例化过程,先执行new方法,如果没有写new,默认调用object中的new方法,返回一个实例化对象,然后再调用init方法,对这个对象进行初始化。



init和new的区别


  • new方法,创建对象;init方法,初始化对象。


  • new方法,返回对象引用;init方法,定义实例属性。


  • new方法,是类级别的方法;init方法,是实例级别的方法。





单例模式


单例模式:是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。


单例模式的作用


  • 一个特殊的类,这个类只能创建一次实例


  • 实例化不同的对象,内存地址不同


  • 单例模式可以节省空间,实例化不同对象会产生不同的内存地址,造成浪费资源。


实现单理模式的方法


  • 通过@classmethod


  • 通过装饰器实现


  • 通过__new__实现


  • 通过导入模块时实现


通过__new__实现单例模式

7fa03b81a53546d59add081c8183ab08.png


通过装饰器实现单例模式


  • 理解部分

7c85e767c7fb4a0585749d7ccc8acecc.png


实现部分

b8214d27280f4c3689d75d5235c0d98b.png


相关文章
|
14天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
119 1
|
2月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
|
2月前
|
调度 Python
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
微电网两阶段鲁棒优化经济调度方法(Python代码实现)
|
2月前
|
传感器 大数据 API
Python数字限制在指定范围内:方法与实践
在Python编程中,限制数字范围是常见需求,如游戏属性控制、金融计算和数据过滤等场景。本文介绍了五种主流方法:基础条件判断、数学运算、装饰器模式、类封装及NumPy数组处理,分别适用于不同复杂度和性能要求的场景。每种方法均有示例代码和适用情况说明,帮助开发者根据实际需求选择最优方案。
84 0
|
2月前
|
Python
Python字符串center()方法详解 - 实现字符串居中对齐的完整指南
Python的`center()`方法用于将字符串居中,并通过指定宽度和填充字符美化输出格式,常用于文本对齐、标题及表格设计。
|
7天前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
82 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
19天前
|
算法 调度 决策智能
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
【两阶段鲁棒优化】利用列-约束生成方法求解两阶段鲁棒优化问题(Python代码实现)
|
2月前
|
机器学习/深度学习 数据采集 算法
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
【CNN-BiLSTM-attention】基于高斯混合模型聚类的风电场短期功率预测方法(Python&matlab代码实现)
134 4
|
2月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
|
3月前
|
数据管理 开发工具 索引
在Python中借助Everything工具实现高效文件搜索的方法
使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
197 0

推荐镜像

更多