当前位置:首页 > 编程教程 > Python教程 > python多态

python多态
栏目分类:Python教程发布日期:2020-01-18浏览次数:

多态 1.多态的概念 当一个类派生出多个类时,它们虽然会有父类中的共同方法,但是它们也会有自己特有的一些特征,比如一个person类,里面有一个play的方法,那么派生出一个子类child,那么对于孩子来讲,他们的娱乐方法可能是玩游戏;如果派生出一个子类elde
多态

1.多态的概念

当一个类派生出多个类时,它们虽然会有父类中的共同方法,但是它们也会有自己特有的一些特征,比如一个person类,里面有一个“play”的方法,那么派生出一个子类“child”,那么对于孩子来讲,他们的娱乐方法可能是玩游戏;如果派生出一个子类“elder”,他们的娱乐方法就可能会是下棋,也就是说同一种方法,对于不同的对象来说表现出不同的形态,这在面向对象中就叫做多态。
多态只能针对于方法,属性不存在多态,而且多态的存在必须基于继承和重写。


输出结果:
小孩子玩游戏
年轻人打篮球
老人下棋

2.多态和isinstance

我们之前有用到过isinstance(a,b)方法,其中a是必须一个对象,b是必须一个类,它可以判断对象和这个类之间的关系,如果a是b的类型或者子类时,会返回True,否则返回False。
比如我们在上例的基础上创建一个person对象p,来测试一下。


输出结果:
True
False
 
结果表示对象“xiaohai”属于person类(实际上是person的子类),反之对象p不是child类或派生类。
我们可以使用isinstance()方法来判断一个对象是否属于父类的派生,以此来调用它的多态方法。

输出结果:
小孩子玩游戏
年轻人打篮球
老人下棋
 
这里可以体现多态的好处就是,当需要增加person的子类时,我们只需要让run()方法接收新的子类对象就可以了,因为它们都从属于personl类型。
对于一个变量,只有它从属于person类,就可以放心地调用run()方法,而在调用时,run()方法会根据传入对象具体的类型找到自己应该调用的方法,这就是多态作用的体现。
当我们需要增加person类的子类时,不需要更改run()方法,直接传入新的对象即可,这也符合著名的“开闭”原则,即对扩展开放(允许扩展子类);对修改封闭(不需修改调用方法)。

相关热词: python

     
编程入门 编程教程 编程资源 编程问答