Python--面向对象之多态与多态性

Posted mr07lee

tags:

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

一、多态

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

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

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)

文件有多种形态:文本文件,可执行文件

import abc
class File(metaclass=abc.ABCMeta): #同一类事物:文件
    @abc.abstractmethod
    def click(self):
        pass

class Text(File): #文件的形态之一:文本文件
    def click(self):
        print(open file)

class ExeFile(File): #文件的形态之二:可执行文件
    def click(self):
        print(execute file)

二、多态性

1.什么事多态动态绑定(在继承的背景下使用时,有时也成为多态性)

多态性是指在不考虑实例类型的情况下使用实例

技术分享图片
在面向对象方法中一般是这样表述多态性:向不同的对象发送同一条消息(!!!obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。

比如:老师.下课铃响了(),学生.下课铃响了(),老师执行的是下班操作,学生执行的是放学操作,虽然二者消息一样,但是执行的效果不同
详细解释

多态性分为静态多态性和动态多态性

  静态多态性:如任何类型都可以用运算符+进行运算

  动态多态性:如下

peo=People()
dog=Dog()
pig=Pig()

#peo、dog、pig都是动物,只要是动物肯定有talk方法
#于是我们可以不用考虑它们三者的具体是什么类型,而直接使用
peo.talk()
dog.talk()
pig.talk()

#更进一步,我们可以定义一个统一的接口来使用
def func(obj):
    obj.talk()

2.为什么要用

以上是关于Python--面向对象之多态与多态性的主要内容,如果未能解决你的问题,请参考以下文章

Python3 与 C# 面向对象之~继承与多态

Python3 与 C# 面向对象之~继承与多态

python------面向对象介绍之多态实例

python必学的面向对象基础之继承静态与多态

Python面向对象之:三大特性:继承,封装,多态。

19.Python面向对象之:三大特性:继承,封装,多态。