python多态协议鸭子类型分析
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,本篇内容介绍了"python多态协议鸭子类型分析"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接口(
千家信息网最后更新 2025年02月06日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多态协议鸭子类型分析"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
类型
鸭子
接口
多态
乌龟
对象
就是
循环
分析
代码
内容
函数
实例
方法
更多
知识
迭代
不同
实用
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全四段命名法
移动端软件开发的工具
浦东新区提供软件开发创造辉煌
镇江互联网软件开发
公安网络安全管理工作总结
宏迈软件开发人员无法选择
武清招计算机网络技术支持
与医院计算机网络安全管理制度
密码怎么与数据库对比
通州区特定软件开发风格
网络安全是指分布网络环境
金钟罩网络安全培训
我国网络安全缺口
关于网络安全的段落
微软服务器集群
缓存视频显示无数据库
网络安全监控行业前景
互联网网科技图像
联宝科技服务器怎么样
连接odbc数据库失败
香港哪个服务器被扫段攻击了
西安晟腾互联网科技
网络安全总体a类
重庆主城手机棋牌软件开发
友谊游戏软件开发在线咨询
天津专业软件开发创意
客户端怎样连接云服务器
易方达做软件开发好吗
软件开发需要哪几门课程
网络技术基础的内容