多态(polymorphism)是指同一个方法调用由于对象不同可能产生不同的行为。在现实生活中,我们有很多例子。比如:同样是吃饭:

  • 中国人用筷子吃饭
  • 英国人用刀叉吃饭
  • 印度人用手吃饭

关于多态要注意一下2点:

  1. 多态是方法的多态,属性没有多态。

  2. 多态的存在有两个必要条件:继承、方法重写。

示例代码:

class Animal:
    def shout(self):
        print("动物叫了一声")

class Dog(Animal):
    def shout(self):
        print("汪汪汪...")

class Cat(Animal):
    def shout(self):
        print("喵喵喵...")

def animal_shout(a):
    if isinstance(a, Animal):
        a.shout()
    else:
        print("不能shout")


animal_shout(Animal())
animal_shout(Dog())
animal_shout(Cat())

运行结果:

动物叫了一声
汪汪汪...
喵喵喵...

程序说明:

  1. 首先定义类Animal,包含方法shout()。紧接着定义类Dog,指明继承Animal,定义方法shout(),最后定义类Cat,指明继承Animal,定义方法shout()
  2. 定义了一个animal_shout,首先判断是否为类Animal的实例,如果是,则执行shout()方法,如果不是,则提示:不能shout,确保程序运行不会出现问题。
  3. 首先调用animal_shout(Animal()),因为Animal(),返回的Animal的实例,调用Animal实例的shout()方法,则打印输出:动物叫了一声。当运行对象为Dog()Cat()分别返回对应的实例,因为各自方法里面均有定义shout()方法,均调用自己的方法,分别输出对应的内容:汪汪汪...喵喵喵...

以上就是关于Python面向对象-多态知识点的简单介绍。


备注:
更多精彩博客,请访问:聂发俊的技术博客
对应视频教程,请访问:python400
完整markdown笔记,请访问: python400_learn_github