提到__new__就不能不说__init__,先说说关于__new__和__init__的不同与用法:

    object.__new__(cls[, ...]):调用创建cls类的一个新的实例。是静态方法不用声明。返回一个新对象的实例

    object.__init__(self[, ...]):当实例创建的时候调用。没有返回值。

      __new__在__init__这个之前被调用:

      如果__new__返回一个cls的实例,那么新的实例的__init__方法就会被调用,且self是这个新的实例。如果是自定义重写__new__,没有调用__init__的话__init__就不起作用了。

      如果__new__不返回一个cls的实例,那么新的实例的__init__方法就不会被调用。

posted on 2013-06-19 17:07  TianMG  阅读(273)  评论(0)    收藏  举报