赞
踩
在说单例模式前我们先看python在对类对象实例化及调用时都做了什么?
python在对类对象实例化及调用时用到了__init__和__new__方法。下面首先通过__init__和__new__方法的调用来了解这一过程。
一、__new__和__init__的区别
__new__的作用:创建对象、分配内存
__init__的作用:初始化对象
代码演示如下:
#__new__和__init__的区别
#先通过__new__创建对象,分配内存,然后使用__init__初始化对象#所有的类都继承于object,__new__属于object中的方法。#调用我们平时定义的类时会自动的执行object类中的__new__方法创建对象,分配内存。
#下面将__new__ 方法重写后,可以看到从创建对象到初始化的全过程
classmyclass(object):def __init__(self): #初始化对象
print('initialization')def __new__(cls, *args, **kwargs):print('Create object,assign memory')
obj= super().__new__(cls) ##创建对象、分配内存
returnobjdefadd(self,a ,b):return a +bif __name__ == '__main__':
A=myclass()print(A.add(2,3))
运行结果:
Create object,assign memory
initialization5
以上结果可以看出,
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。