python魔法方法-构造方法详解

构造方法:

 “__init__”这个构造函数,具有初始化的作用,也就是当该类被实例化的时候就会执行该函数。那么我们就可以把要先初始化的属性放到这个函数里面。

      

如果给构造方法传入几个参数,会发生什么情况呢?

创建对象时若传入值,则会覆盖默认值:

   

重写一般方法和特殊的构造方法:

对于继承:每个类都可能有一个或多个超类,它们从超类那里继承行为方式,如果一个方法在子类的一个实例中被调用,但在子类中没有该方法,那么就会去超类中寻找;

   

当然,可以通过重写的方式,自定义继承的行为,比如B类重写hello方法:

   

重写是继承中的重要机制,对于构造方法尤其重要,构造方法用来初始化新创建对象的状态,大多数子类不仅要拥有自己的初始化代码,还要拥有超类的初始化代码。

如果一个构造方法被重写,那么需要调用超类的构造方法。

    

   

第一次子类调用父类中的eat方法失败,因为在子类中,构造方法被重写,但新的构造方法没有任何关于初始化hungry的特性的代码,所以调用失败;

要达到预期效果,子类的构造方法必须要调用其超类的构造方法来确保进行基本的初始化;例如第二次操作成功。

或者使用super函数来达到同样效果:

    

不用担心super返回的是什么,假装返回的是所需的超类,实际上它返回了一个super对象,这个对象负责进行方法解析,当对其特性进行访问时,它会查找所有的超类(以及超类的超类),直到找到所需的特性为止(或者引发AttributeError异常)。


猜你喜欢

转载自blog.csdn.net/zhengshengnan123/article/details/66477290