_new_()与_init_()的区别
代码: 其中,__new__()不是一定要有,只有继承自object的类才有,该方法可以return父类(通过super(当前类名, cls).__new__())出来的实例,或者直接是object的__new__出来的实例。值得注意的是,在定义子类时没有重新定义__new__()时,Python默认调用该类父类的__new__()方法来构造该类实例,如果该类父类也没有重写__new__(),那么将一直追溯至object的__new__()方法,因为object是所有新式类的基类。如果子类中重写了__new__()方法,那么可以自由选择任意一个其他的新式类。 可见,当类中同时出现__new__()和__init__()时,先调用__new__(),再调用__init__(),具体的执行过程为: 1. 调用实例对象代码xiaoming = Student('xiaoming',175); 2. 传入name和height的参数,执行Student类的__new__()方法,该方法返回一个类的实例,通常会用父类super(Student,cls).__new__(cls),__new__()产生的实例即__init__()的self; 3. 用实例来调用__init__()方法,进行初始化实例对象的操作。 可以看到,python中__new__()与_