__init__和__new__的区别

根据官方文档:
 
  • __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。
  • __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
 也可理解为:1,首先用__new__创建并返回一个实例对象,此处__new__为静态方法
2,返回的实例对象调用__init__方法进行初始化,初始化不返回任何东西,此处__init__是实例方法
即,__new__在__init__之前被调用,__new__的返回值(实例)将传递给__init__方法的第一个参数,然后__init__给这个实例设置一些参数。
__init__ 方法为初始化方法, __new__方法才是真正的构造函数。
__new__方法默认返回实例对象供__init__方法、实例方法使用。
__init__ 方法为初始化方法,为类的实例提供一些属性或完成一些动作。
__new__ 方法创建实例对象供__init__ 方法使用,__init__方法定制实例对象。
__new__是一个静态方法,而__init__是一个实例方法

 



原文地址:https://www.cnblogs.com/ConnorShip/p/10235703.html