python--继承和多态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python--继承和多态相关的知识,希望对你有一定的参考价值。

在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。

技术分享

 

当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。

要理解什么是多态,我们首先要对数据类型再作一点说明。当我们定义一个class的时候,我们实际上就定义了一种数据类型。我们定义的数据类型和Python自带的数据类型,比如str、list、dict没什么两样:

技术分享

 

技术分享

由运行时该对象的确切类型决定,这就是多态真正的威力:调用方只管调用,不管细节,而当我们新增一种Animal的子类时,只要确保run()方法编写正确,不用管原来的代码是如何调用的。这就是著名的“开闭”原则:

对扩展开放:允许新增Animal子类;

对修改封闭:不需要修改依赖Animal类型的run_twice()等函数。

 

以上是关于python--继承和多态的主要内容,如果未能解决你的问题,请参考以下文章

python-继承以及继承问题和多态

Python基础:面向对象-继承和多态

Python面向对象:继承多态类属性和类方法单例

Python面向对象:继承多态类属性和类方法单例

Python--类的继承和多态

python--继承和多态