栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python面向对象中多态性和多态是同一种意思吗?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python面向对象中多态性和多态是同一种意思吗?


我们在寻求数据采集时,可以选择用不同的函数,这就是选择上的灵活使用。不过小编最近发现,很多小伙伴把多态和多态性的概念混淆了。虽然二者看起来很相似但在输出的结果上是不一样的。下面我们就python中的多态性进行分析,让大家在使用的过程中慢慢体会与多态的不同,具体内容我们往下看:


多态动态绑定(在继承的背景下使用时,有时也称为多态性)

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

在面向对象方法中一般是这样表述多态性:

向不同的对象发送同一条消息(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()

注意:多态与多态性是两种概念

import abc
class Animal(metaclass=abc.ABCmeta): #同一类事物:动物
    @abc.abstractmethod
    def talk(self):
        pass
 
class Cat(Animal): #动物的形态之一:猫
    def talk(self):
        print('say miaomiao')
 
class Dog(Animal): #动物的形态之二:狗
    def talk(self):
        print('say wangwang')
 
class Pig(Animal): #动物的形态之三:猪
    def talk(self):
        print('say aoao')
 
c = Cat()
d = Dog()
p = Pig()
 
def func(obj):
    obj.talk()
 
func(c)
func(d)
func(p)
 
------------------------------
 
>>> say miaomiao
>>> say wangwang
>>> say aoao

以上就是我们对于python面向对象中多态性的使用,可以看出和多态的使用有着明显的不同。小伙伴们想要防止理解出错的话,可以选择多态动态绑定的名称来记忆。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/11258.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号