继承自object的新式类才有new
new至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供
new必须要有返回值,返回实例化出来的实例,这点在自己实现new时要特别注意,可以return父类new出来的实例,或者直接是object的new出来的实例
init有一个参数self,就是这个new返回的实例,init在new的基础上可以完成一些其它初始化的动作,init不需要返回值
若new没有正确返回当前类cls的实例,那init是不会被调用的,即使是父类的实例也不行
结论:
当创建一个类的对象的时候先执行此类的new方法(必须有返回值),
一般来说这个返回值是此类的对象(不排除返回其他类对象的情况)
1.当返回此类对象的时候,会调用此类的init方法进行初始化操作.
2.当返回别类对象的时候,会调用别类的new方法进行创建对象,然后根据返回值在进行2操作
网友评论