python 类的多态的理解

理解:子类的对象也是属于父类的对象的类型。

我们可以通过以下代码来加深理解:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

#!/usr/bin/env python3

# -*- coding:utf-8 -*-

class Person:

    def __init__(self, name, age):

        self.name = name

        self.age = age

    def print_age(self):

        print("%s's age is %s" % (self.name, self.age))

class Man(Person):

    def print_age(self):

        print("Mr. %s's age is %s" %(self.name, self.age))

class Woman(Person):

    def print_age(self):

        print("Ms. %s's age is %s" %(self.name, self.age))

        

def person_age(person):

    person.print_age()

person = Person("kevin", 23)

man = Man("Bob", 33)

woman = Woman("Lily", 28)

person_age(person)

person_age(man)

person_age(woman)

以上代码执行结果如下:

1

2

3

kevin's age is 23

Mr. Bob's age is 33

Ms. Lily's age is 28

在以上代码中函数 person_age 函数的输入参数为类 Person 的实例,但是在实际执行过程中 Person 的子类 Man 和 Woman 的示例同样可以在 person_age 函数中正常运行,因为子类的对象也属于父类的对象类型。这既是类的多态的作用。。