• 技术文章 >Python技术 >Python基础教程

    python面向对象中多态的使用前提是什么?

    小妮浅浅小妮浅浅2021-01-11 14:38:53原创2909

    我们看到的事物有圆形或者方形之分,这就是事物存在的不同形态,放在我们python中的多态同样适用。有些小伙伴们看到多态中既有区别又有联系,这是因为类继承所带来的好处。多态作为类的三个特性之一,使用时不免会跟其他的特性有所联系。下面我们就python面向对象中多态的使用前提进行探索,开始之间先来简单了解下多态。

    多态指的是一类事物有多种形态。

    动物有多种形态:人,狗,猪

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    import abc

    class Animal(metaclass=abc.ABCMeta): #同一类事物:动物

        @abc.abstractmethod

        def talk(self):

            pass

      

    class People(Animal): #动物的形态之一:人

        def talk(self):

            print('say hello')

      

    class Dog(Animal): #动物的形态之二:狗

        def talk(self):

            print('say wangwang')

      

    class Pig(Animal): #动物的形态之三:猪

        def talk(self):

            print('say aoao')

    class Dog(object):

      

        def __init__(self, name):

            self.name = name

      

        def game(self):

            print("%s 蹦蹦跳跳的玩耍..." % self.name)

      

    class XiaoTianDog(Dog):

      

        def game(self):

            print("%s 飞到天上去玩耍..." % self.name)

     :继承、重写。

    class Person(object):

      

        def __init__(self, name):

            self.name = name

      

        def game_with_dog(self, dog):

      

            print("%s 和 %s 快乐的玩耍..." % (self.name, dog.name))

            dog.game()

    game 方法是在 Dog 父类中定义的,Person 类中只需要让狗对象调用 game 方法,而不关心具体是什么狗。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    # 1. 创建一个狗对象

    # wangcai = Dog("旺财")

    wangcai = XiaoTianDog("飞天旺财")

      

    # 2. 创建一个小明对象

    xiaoming = Person("小明")

      

    # 3. 让小明调用和狗玩的方法

    xiaoming.game_with_dog(wangcai)

    # 小明 和 飞天旺财 快乐的玩耍...

    # 飞天旺财 飞到天上去玩耍...

    在程序执行时,传入不同的狗对象实参,就会产生不同的执行效果。

    类的多态特性,必须满足以下 2 个前提条件:

    通过在python面向对象中对多态的初步学习,我们已经得出多态的两个使用前提,这点是需要小伙伴们使用时需要注意的,大家不要忘记啦。

    专题推荐:python面向对象 多态
    上一篇:python中reduce函数和map函数的区别有哪些? 下一篇:python中reduce函数如何实现阶乘?

    相关文章推荐

    • 深入理解python面向对象-类成员• 详解Python面向对象编程之类、实例、方法• python面向对象的三大特征,你知道么?• python面向对象中的调用方法有哪些?怎么用?• 类继承如何在python面向对象中实现?有什么好处?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网