提到__new__就不能不说__init__,先说说关于__new__和__init__的不同与用法:
object.__new__(cls[, ...]):调用创建cls类的一个新的实例。是静态方法不用声明。返回一个新对象的实例
object.__init__(self[, ...]):当实例创建的时候调用。没有返回值。
__new__在__init__这个之前被调用:
如果__new__返回一个cls的实例,那么新的实例的__init__方法就会被调用,且self是这个新的实例。如果是自定义重写__new__,没有调用__init__的话__init__就不起作用了。
如果__new__不返回一个cls的实例,那么新的实例的__init__方法就不会被调用。