全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

老生常谈python之鸭子类和多态

一、 什么是多态

<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小时内与您取得联系。