1.__new__方法介绍
首先我们要知道,python解释器在创建实例对象时做了两件事,分别为:
1.分配内存空间
2.为对象进行初始化
我们知道为对象进行初始化工作是内置函数__init__来进行的,而为对象分配内存空间则是内置函数__new__方法来进行的。
下面介绍下这个__new__方法:
__new__方法是python解释器基类(object)的内置静态方法(虽然它没有静态修饰符@staticmethod),__new__方法的作用主要有两个:
1.为对象分配内存空间
2.返回对象的引用
“返回对象的引用”的作用是什么?
我们学习过python中__init__方法,__init__方法中的第一个参数self就是实例对象的引用,也就是说,哪个对象调用该方法,self就指向哪个对象。self中对象的引用就是从__new__方法中返回的,换句话说,__new__方法返回对象的引用,__init__方法用self参数接收了。因此我们可以知道,pyhon在创建对象时,首先调用了内置__new__方法,其次再调用__init__方法。
__init__方法在创建实例对象时会自动被调用,如下图: