当前位置: 首页 > news >正文

python 抽象接口和对应关系总结

通过实现特殊方法,自定义数据类型可以表现得跟内置类型一样,从而让我们写出更具表达力的代码——或者说,更具 Python 风格的代码。

功能协议接口
+__add__
*__mul__
str()先查找是否实现 __str__ 协议,没有查找是否实现 __repr__
bool()默认情况下,我们自己定义的类的实例总被认为是真的,除非这个类对 __bool__ 或者 __len__ 函数有自己的实现。bool(x) 的背后是调用 x.__bool__() 的结果;如果不存在 __bool__ 方法,那么 bool(x) 会尝试调用 x.__len__()。若返回 0,则 bool 会返回 False;否则返回 True
字符串 / 字节序列 表示形式__repr__、__str__、__format__、__bytes__
数值转换__abs__、__bool__、__complex__、__int__、__float__、__hash__、__index__
集合模拟__len__、__getitem__、__setitem__、__delitem__、__contains__
迭代枚举__iter__、__reversed__、__next__
可调用模拟__call__
上下文管理__enter__、__exit__
实例创建和销毁__new__、__init__、__del__
属性管理__getattr__、__getattribute__、__setattr__、__delattr__、__dir__
属性描述符__get__、__set__、__delete__
跟类相关的服务__prepare__、__instancecheck__、__subclasscheck__
一元运算符__neg__ -、__pos__ +、__abs__ abs()
众多比较运算符__lt__ <、__le__ <=、__eq__ ==、__ne__ !=、__gt__ >、__ge__ >=
算术运算符__add__ +、__sub__ -、__mul__ *、__truediv__ /、__floordiv__ //、__mod__ %、__divmod__ divmod()、__pow__ ** 或 pow()、__round__ round()
反向算术运算符__radd__、__rsub__、__rmul__、__rtruediv__、__rfloordiv__、__rmod__、__rdivmod__、__rpow__
增量赋值算术运算符__iadd__、__isub__、__imul__、__itruediv__、__ifloordiv__、__imod__、__ipow__
位运算符__invert__ ~、__lshift__ <<、__rshift__ >>、__and__ &、__or__ |、__xor__ ^
反向位运算符__rlshift__、__rrshift__、__rand__、__rxor__、__ror__
增量赋值位运算符__ilshift__、__irshift__、__iand__、__ixor__、__ior__

相关文章:

  • 区间预测 | Matlab实现BiLSTM-Adaboost-ABKDE的集成双向长短期记忆网络自适应带宽核密度估计多变量回归区间预测
  • vtk9.3 配置 visual studio 2019 运行环境 和运行实例详解
  • 低代码-添加按钮组件设计
  • OpenJDK 和 OracleJDK 哪个jdk更好更稳定,正式项目用哪个呢?关注者
  • 三、Qt Creator 使用
  • 什么是池化层?
  • mac上搭建 hadoop 伪集群
  • 序章 熟悉战场篇—了解vue的基本操作
  • Mysql 安装通过mysql installer安装+配置环境+连接可视化工具
  • Ubuntu 22.04 基础环境搭建
  • 码云星辰:未来运维的技术交响曲
  • SLF4J Spring Boot日志框架
  • [HarmonyOS]第一课:从简单的页面开始
  • java多线程详细讲解
  • Grafana(三)Grafana 免密登录-隐藏导航栏-主题变换
  • 【399天】跃迁之路——程序员高效学习方法论探索系列(实验阶段156-2018.03.11)...
  • ES2017异步函数现已正式可用
  • JavaScript DOM 10 - 滚动
  • JavaScript 基本功--面试宝典
  • underscore源码剖析之整体架构
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • Linux权限管理(week1_day5)--技术流ken
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)常见O(n^2)排序算法解析
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (算法)前K大的和
  • (一)Dubbo快速入门、介绍、使用
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .Net CoreRabbitMQ消息存储可靠机制
  • .Net IE10 _doPostBack 未定义
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .NET实现之(自动更新)
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .net专家(高海东的专栏)
  • /etc/motd and /etc/issue
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [C# WPF] 如何给控件添加边框(Border)?
  • [C#][DevPress]事件委托的使用
  • [C++] 统计程序耗时
  • [codeforces]Checkpoints
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [Erlang 0129] Erlang 杂记 VI 2014年10月28日