一、 什么是多态

<1>一种类型具有多种类型的能力
<2>允许不同的对象对同一消息做出灵活的反应
<3>以一种通用的方式对待个使用的对象
<4>非动态语言必须通过继承和接口的方式来实现
二、 python中的多态
<1>通过继承实现多态(子类可以作为父类来使用)
<2>子类通过重载父类的方法实现多态
class Animal:
def move(self):
print('animal is moving....')
class Dog(Animal):
pass
def move(obj):
obj.move()
>>>move(Animal())
>>>animal is moving....
>>>move(Dog())
>>>animal is moving....
class Fish(Animal):
def move(self):
print('fish is moving....')
>>>move(Fish())
>>>fish is moving....
三、 动态语言和鸭子类型
<1>变量绑定的类型是不确定的
<2>函数和方法可以接收任何类型的参数
<3>调用方法时不检查提供的参数类型
<4>调用是否成功有参数的方法和属性确定,调用不成功则抛出错误
<5>不用实现接口
class P:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, oth):
return P(self.x+oth.x, self.y+oth.y)
def info(self):
print(self.x, self.y)
class D(P):
def __init__(self, x, y, z):
super.__init__(x, y)
self.z = z
def __add__(self, oth):
return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
def info(self):
print(self.x, self.y, self.z)
class F:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
def __add__(self, oth):
return D(self.x+oth.x, self.y+oth.y, self.z+oth.z)
def info(self):
print(self.x, self.y, self.z)
def add(a, b):
return a + b
if __name__ == '__main__':
add(p(1, 2), p(3, 4).info())
add(D(1, 2, 3), D(1, 2, 3).info())
add(F(2, 3, 4), D(2, 3, 4).info())
四、 多态的好处
<1>可实现开放的扩展和修改的封闭
<2>使python程序更加的灵活
以上这篇老生常谈python之鸭子类和多态就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# python 多态
# 多态
# 子类
# 给大家
# 老生常谈
# 希望能
# 这篇
# 不确定
# 来实现
# 绑定
# 不成功
# 抛出
# 小编
# 大家多多
# 为父
# brush
# Animal
# py
# class
# pre
# python
相关文章:
建站主机核心功能解析:服务器选择与网站搭建流程指南
如何通过虚拟主机空间快速建站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
如何通过老薛主机一键快速建站?
如何在Windows环境下新建FTP站点并设置权限?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】
官网网站制作腾讯审核要多久,联想路由器newifi官网
成都响应式网站开发,dw怎么把手机适应页面变成网页?
如何在宝塔面板创建新站点?
XML的“混合内容”是什么 怎么用DTD或XSD定义
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
如何快速启动建站代理加盟业务?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何配置WinSCP新建站点的密钥验证步骤?
建站主机无法访问?如何排查域名与服务器问题
制作农业网站的软件,比较好的农业网站推荐一下?
c# 服务器GC和工作站GC的区别和设置
制作网站公司那家好,网络公司是做什么的?
网站建设制作、微信公众号,公明人民医院怎么在网上预约?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
C++用Dijkstra(迪杰斯特拉)算法求最短路径
,有什么在线背英语单词效率比较高的网站?
电商网站制作价格怎么算,网上拍卖流程以及规则?
如何在Windows服务器上快速搭建网站?
电商平台网站制作流程,电商网站如何制作?
如何访问已购建站主机并解决登录问题?
如何在阿里云域名上完成建站全流程?
代刷网站制作软件,别人代刷火车票靠谱吗?
如何制作算命网站,怎么注册算命网站?
建站之星在线版空间:自助建站+智能模板一键生成方案
台州网站建设制作公司,浙江手机无犯罪记录证明怎么开?
IOS倒计时设置UIButton标题title的抖动问题
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
高防服务器租用如何选择配置与防御等级?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
建站之星代理如何获取技术支持?
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
如何在Tomcat中配置并部署网站项目?
如何通过wdcp面板快速创建网站?
网站制作公司,橙子建站是合法的吗?
宝塔建站助手安装配置与建站模板使用全流程解析
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
头像制作网站在线制作软件,dw网页背景图像怎么设置?
利用JavaScript实现拖拽改变元素大小
如何快速搭建响应式可视化网站?
如何在Ubuntu系统下快速搭建WordPress个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。