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

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

一、init和new方法


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


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


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


1、new方法的作用


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


  • 返回对象的引用


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


553bba9575a1435fb26f8d5b47aa08b0.png


2、重写new方法


返回对象引用的方式:


  • 父类名.方法名(cls)


  • super().方法名(cls)


14cc74046ea941c7bad8c46fa242a6ca.png


3、总结


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


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


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


执行步骤


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


4、init和new的区别


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


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


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




二、单例模式


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


1、单例模式的作用


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


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


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


2、实现单理模式的方法


  • 通过@classmethod


  • 通过装饰器实现


  • 通过__new__实现


  • 通过导入模块时实现


3、通过__new__实现单例模式

9494f4484f644b3492cbb15a433448f2.png


4、通过装饰器实现单例模式


理解部分:

f950c10afce2487a9f350669b2b53a90.png


实现部分:

68e7d24915dd4411b8b88a6f59116add.png


相关文章
|
6天前
|
移动开发 Python Windows
python编程获取网页标题title的几种方法及效果对比(源代码)
python编程获取网页标题title的几种方法及效果对比(源代码)
|
6天前
|
Python
python方法,传参20220101 计算与当前时间差
python方法,传参20220101 计算与当前时间差
|
7天前
|
缓存 开发者 Python
Python指定行号读取文件的方法
这种方法的优势在于它的效率和简便性,特别是当需要从同一文件中读取多行时。`linecache`会缓存文件,减少了重复读取的开销。
15 4
|
6天前
|
存储 Python
Python中类方法、实例方法与静态方法的区别
这三种方法的正确使用可以使代码更加清晰、组织良好并且易于理解,从而有效地支持软件开发的面向对象编程范式。
9 1
|
7天前
|
Python
Python中的push方法详解与实例
Python中的push方法详解与实例
11 3
|
5天前
|
机器学习/深度学习 PyTorch TensorFlow
Python实现深度学习学习率指数衰减的方法与参数介绍
学习率指数衰减提供了一种高效的动态调整学习率的手段,帮助模型在不同训练阶段以不同的学习速度优化,有利于提升模型性能和训练效率。通过合理设置衰减策略中的参数,可以有效地控制学习率的衰减过程,实现更加精确的模型训练调优。
7 0
|
5天前
|
UED Python
Python requests库下载文件时展示进度条的实现方法
以上就是使用Python `requests`库下载文件时展示进度条的一种实现方法,它不仅简洁易懂,而且在实际应用中非常实用。
10 0
|
6天前
|
JSON JavaScript 前端开发
6-19|Python数据传到JS的方法
6-19|Python数据传到JS的方法
|
6天前
|
大数据 Python
6-11|Python中保证两位小数的方法
6-11|Python中保证两位小数的方法
|
6天前
|
Python
Python类中属性和方法区分3-8
Python类中属性和方法区分3-8
下一篇
无影云桌面