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

目录

一、init和new方法

1、new方法的作用

2、重写new方法

3、总结

4、init和new的区别

二、单例模式

1、单例模式的作用

2、实现单理模式的方法

3、通过__new__实现单例模式

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


一、init和new方法

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

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

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

1、new方法的作用

  • 在内存中为对象分配空间
  • 返回对象的引用

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

2、重写new方法

返回对象引用的方式:

  • 父类名.方法名(cls)
  • super().方法名(cls)

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__实现
  • 通过导入模块时实现

下面演示分别通过__new__方法和装饰器实现单例模式:

3、通过__new__实现单例模式

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

理解部分:

实现部分: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

街 三 仔

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值