返回顶部
首页 > 资讯 > 后端开发 > Python >python多态协议鸭子类型分析
  • 319
分享到

python多态协议鸭子类型分析

2023-06-21 21:06:24 319人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python多态协议鸭子类型分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接口(Python 中的协议)的多种不同的实现

本篇内容介绍了“python多态协议鸭子类型分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

接口(Python 中的协议)的多种不同的实现方式即为多态。多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。

from abc import ABCMeta, abstractmethod# 鸭子类class Dock(metaclass=ABCMeta):    @abstractmethod    def Swimming(self):  # 游泳方法协议(接口)        pass    @abstractmethod  # 走路协议(接口)    def Walk(self):        pass    @claSSMethod    def __subclasshook__(cls, C):        # 判断是否另一个比较类是否实现了 Swimming Walk 协议, 如果实现了鸭子类的这两个协议,        # 那么比较类的类型就是一个鸭子类型        # 当代码执行中如果执行到对象和这个类进行 isinstance 类型判断时会走到这个函数进行判断        for method in ('Swimming', 'Walk'):            for B in C.__mro__:                if method in B.__dict__:                    if B.__dict__[method] is None:                        return NotImplemented                    break            else:                return NotImplemented        return True# 狗类class Dog(object):    # 实现swimming 协议    def Swimming(self):        print("狗会狗刨")    # 实现walk 协议    def Walk(self):        print("狗会走路")    def Eat(self):        print("狗喜欢吃骨头")# 乌龟类class Tortoise(object):    # 实现swimming 协议    def Swimming(self):        print("乌龟会潜水")    # 实现walk 协议    def Walk(self):        print("乌龟会走路")    def Eat(self):        print("乌龟喜欢吃鱼")dog = Dog()tortoise = Tortoise()print(isinstance(dog, Dock))         # Trueprint(isinstance(tortoise, Dock)) # True

可以看到,在上面的代码中,只要实现了 Dock 类中的 swimming 和 Walk 方法,那么这个类就可以被叫做 Dock 类

应用场景 如: for 循环, 在python 中 for 循环只能用于可迭代对象, 那么, 我自己定义的类实现了 __iter__协议(接口),这个实例类就是一个可迭代对象,可以被for 循环使用

python 中定义协议类协议使用 @abstractmethod 装饰器,@abstractmethod 装饰过的类是不能进行初始化的,相对于c++中的纯虚函数类
这个类只能当做协议(接口)类

“python多态协议鸭子类型分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: python多态协议鸭子类型分析

本文链接: https://lsjlt.com/news/300666.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python多态协议鸭子类型分析
    本篇内容介绍了“python多态协议鸭子类型分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接口(python 中的协议)的多种不同的实现...
    99+
    2023-06-21
  • python 多态 协议 鸭子类型详解
    接口(python 中的协议)的多种不同的实现方式即为多态。多态的作用,就是为了类在继承和派生的时候,保证使用“家谱”中任一类的实例的某一属性时的正确调用。 from abc i...
    99+
    2024-04-02
  • Python浅析多态与鸭子类型使用实例
    什么多态:同一事物有多种形态 为何要有多态=》多态会带来什么样的特性,多态性 多态性指的是可以在不考虑对象具体类型的情况下而直接使用对象多态指的是一类事物有多种形态,比如动物有多种形...
    99+
    2024-04-02
  • javascript设计模式之鸭子类型和多态
    目录1.鸭子类型2.多态2.1 java多态2.2 js多态总结本文参考曾探编写的JavaScript设计模式与开发实践 设计模式的实现都遵循一条原则,即“找出程序中变化...
    99+
    2024-04-02
  • 面向对象:接口思想、多态、鸭子类型、反射
    一、接口思想 建立关联的桥梁,方便管理代码 接口思想提现:为类拓展功能 接口类:用来定义功能的类,为继承它的子类提供功能的。 该类的功能方法一般不需要有实现体,实现体有继承它的子类自己去实现。 #提供所有看门应该有的功能 cla...
    99+
    2023-01-31
    鸭子 反射 面向对象
  • 详细介绍Python的鸭子类型
    鸭子类型基本定义 首先Python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型。 以下是维基百科中对鸭子类型得论述: 在程序设计中,鸭子类型(英语:duck typing)是动态类...
    99+
    2022-06-04
    详细介绍 鸭子 类型
  • javascript设计模式中鸭子类型和多态怎么实现
    这篇文章主要介绍“javascript设计模式中鸭子类型和多态怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“javascript设计模式中鸭子类型和多态怎么实现”文章能帮助大家解决问题。1....
    99+
    2023-06-26
  • 简单聊聊Python中的鸭子类型和猴子补丁
    目录前言鸭子类型猴子补丁总结前言 Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这两个词而已。 我最...
    99+
    2024-04-02
  • Python中的鸭子类型和猴子补丁怎么使用
    本篇内容主要讲解“Python中的鸭子类型和猴子补丁怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的鸭子类型和猴子补丁怎么使用”吧!鸭子类型引用维基百科中的一段解释:鸭子类...
    99+
    2023-07-06
  • 详解duck typing鸭子类型程序设计与Python的实现示例
    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。 这个概念的名字来源于由J...
    99+
    2022-06-04
    示例 鸭子 程序设计
  • HTTP协议中4xx状态码的错误类型及原因的详细解析
    详解HTTP协议中4xx状态码的错误类型及原因HTTP(Hypertext Transfer Protocol)协议是互联网上应用最为广泛的一种协议,它定义了客户端和服务器之间进行通信的规范。HTTP协议的状态码用于表示服务器对请求的处理结...
    99+
    2023-12-26
    访问限制 错误类型:客户端错误 请求错误 原因:参数错误 无权限
  • Python中类继承与多态的示例分析
    这篇文章主要介绍了Python中类继承与多态的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。概念类(Class): 用来描述具有相同的属性和方法的对象的集合。类变量:...
    99+
    2023-06-22
  • 【Python爬虫与数据分析】UDP/TCP通信协议
    目录 一、网络编程基础 二、UDP协议 三、TCP协议 一、网络编程基础 数据编码与解码 str -> bytes:encode编码,发送信息的时候用encode编码bytes -> str:decode解码,打印接收的信息用decod...
    99+
    2023-09-06
    python udp tcp/ip 网络通信
  • 云服务器有哪几种协议类型的组成部分
    云服务器的协议类型有很多,包括但不限于以下几种: HTTP Server HTTP Server是一种提供HTTP服务的网络服务提供商。用户可以在云服务器的客户端中使用HTTP Server提供的HTTP服务来访问Web应用程序和数据。...
    99+
    2023-10-26
    几种 组成部分 协议
  • HTML输入类型电子邮件实例分析
    本篇内容介绍了“HTML输入类型电子邮件实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 该ema...
    99+
    2024-04-02
  • Python数据类型实例分析
    本篇内容主要讲解“Python数据类型实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python数据类型实例分析”吧!一、内容概要字符串(str)列表(list)元组(tup)字典(di...
    99+
    2023-06-02
  • 云服务器有哪几种协议类型的组成结构和功能分类
    云服务器的协议类型主要有三种,分别是 Apache HTTP Server (ApacheHTTP Server)、GCPLD(GCP Limited Architecture,公有架构)和 Dynamo Server(Dynamo Ser...
    99+
    2023-10-27
    几种 协议 类型
  • python的集合类型举例分析
    本篇内容介绍了“python的集合类型举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!集合:无序不重复的元素的组合利用集合可以删除列表...
    99+
    2023-06-21
  • Python内建类型int源码分析
    今天小编给大家分享一下Python内建类型int源码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题:对于C语言,下面...
    99+
    2023-06-30
  • Python内建类型float源码分析
    这篇文章主要介绍“Python内建类型float源码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python内建类型float源码分析”文章能帮助大家解决问题。1 回顾float的基础知识1....
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作