python3中类(class)的重点与难点:__new__ 与 __init__
。构造方法包括创建对象和初始化对象。
在python当中,分为两步执行:先执行__new__方法,然后执行__init__方法;
- __new__是在实例创建之前被调用的,因为它的任务就是创建实例然后返回该实例,是个静态方法。
- __init__是当实例对象创建完成后被调用的,然后设置对象属性的一些初始值。self表示实例。
总结:
__new__
至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
__new__
必须要有返回值,返回实例化出来的实例,这点在自己实现__new__
时要特别注意,可以return父类__new__
出来的实例,或者直接是object的__new__
出来的实例。
__init__
有一个参数self,就是这个__new__
返回的实例,__init__
在__new__
的基础上可以完成一些其它初始化的动作,__init__
不需要返回值
我们可以将类比作制造商,__new__
方法就是前期的原材料购买环节,__init__
方法就是在有原材料的基础上,加工,初始化商品环节。这样记就不会乱了啦。
最后附赠图解: