区别
1. __new__方法是在实例对象创建时执行的,而构造方法__init__是实例创建后执行的。
2. 解析:
(1)__new__方法
- __new__方法是Python新式类(py2既有新式类也有经典类、py3统一为新式类;(py2中的新式类需要显示继承object))引入的
- __new__用于控制生成一个新实例的过程。是类级别的静态方法,在创建实例对象时执行,如果自定义类中没有重写该方法,则Python自动调用父类的方法,当所有父类也没有重写定义该方法时,则直接调用object类的__new__方法。
- __new__(cls,*args,**kwargs) 其中:
1) cls为创建实例对应类的类名,由Python自动传入;
2) args为实例创建时传入的非关键字参数,打包成元组tuple给函数体调用;
3) kwargs为实例创建时传入的关键字参数,字典形式的