Python3__new__方法和__init__方法理解
1)__new__
至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
2)__new__
必须要有返回值,返回实例化出来的实例,这点在自己实现__new__
时要特别注意,可以return父类__new__
出来的实例,或者直接是object的__new__
出来的实例
3)__init__
有一个参数self,就是这个__new__
返回的实例,__init__
在__new__
的基础上可以完成一些其它初始化的动作,__init__
不需要返回值
**4)**我们可以将类比作制造商,__new__
方法就是前期的原材料购买环节,__init__
方法就是在有原材料的基础上,加工,初始化商品环节
**5)**在其他语言中没有__new__
方法和__init__
方法之分,有一个构造函数,__new__
方法负责创建对象并且返回对象的引用,__init__
方法负责初始化对象并且返回初始化之后对象的引用,两者合起来可以理解为其他语言中的构造函数
**6)**在__new__
方法中第一个参数cls
必须是"要进行实例化的类",而且必须返回实例完成的结果,如果实例化失败那么实例的初始化函数__init__
肯定不会执行