__new__() 是在新式类中新出现的方法,它作用在构造方法建造实例之前,可以这么理解,在Python中存在于类里面的构造方法__init__() 负责将类实例化,而在__init__() 启动之前,__new__() 决定是否要使用该__init__() 方法,因为__new__() 可以调用其他类的构造方法或者直接返回别的对象来作为本类的实例。
如果将类比喻为工厂,那么__init__()方法则是该工厂的生产工人,__init__() 方法接受的初始化参数则是生产所需原料, __init__()方法会按照方法中的语句负责将原料加工成实例以供工厂出货。而__new__() 则是生产部经理, __new__() 方法可以决定是否将原料提供给该生产部工人,同时它还决定着出货产品是否为该生产部的产品,因为这名经理可以借该工厂的名义向客户出售完全不是该工厂的产品。