首页 > 编程问答 >从 python 设置运算符符号到方法名称的映射是什么?它们与文档不匹配

从 python 设置运算符符号到方法名称的映射是什么?它们与文档不匹配

时间:2024-08-08 15:54:28浏览次数:14  
标签:python operator-overloading operators

我创建了自己的 Customset 类,它实现了 python 集合的几乎所有方法。 当我使用此自定义集的实例时,许多集合运算符都会失败。它们会失败,并显示类似以下内容的内容:

TypeError: unsupported operand type(s) for -: 'Customset' and Customset'

or

TypeError: '<=' notsupported acrossinstances of 'Customset' and Customset' '

失败的运算符包括:-、-=、&、&=、<、<=、>、>=、^、^=、|、|=、==

我希望它们能够映射到以下中记录的方法:

https://docs.python.org/3.12/library/stdtypes.html#set https://www.w3schools.com/python/python_ref_set.asp


是对的,Python 集合运算符的文档没有明确说明每个运算符调用的是哪个方法。不过,这是 Python 中的标准行为,这些运算符到方法的映射是其数据模型的一部分。

以下是 Python 集合运算符与其对应特殊方法名称的映射表:

| 运算符 | 方法 | 用途 | |-------------|--------------------|-------------------------------------------------------| | | | __or__ | 并集 | | |= | __ior__ | 更新后的并集 | | & | __and__ | 交集 | | &= | __iand__ | 更新后的交集 | | - | __sub__ | 差集 | | -= | __isub__ | 更新后的差集 | | ^ | __xor__ | 对称差集 | | ^= | __ixor__ | 更新后的对称差集 | | == | __eq__ | 相等性 | | != | __ne__ | 不等性 | | < | __lt__ | 子集 | | <= | __le__ | 子集或相等 | | > | __gt__ | 超集 | | >= | __ge__ | 超集或相等 | | in | __contains__ | 成员资格测试 |

为了使的自定义集合类能与这些运算符一起使用,需要在类中实现相应的特殊方法。

例如,要支持 - 运算符(差集),需要在的 Customset 类中定义 __sub__ 方法:

class Customset:
    # ... 其他方法 ...

    def __sub__(self, other):
        #  在此处实现集合差集的逻辑 
        #  并返回一个新的 Customset 实例

通过为每个想要支持的集合运算符实现相应的特殊方法,就可以使的 Customset 类与 Python 的内置集合类型一样工作。

标签:python,operator-overloading,operators
From: 78847169

相关文章

  • 21.python函数(return)
    return一、return语句1、return是指定一个返回值2、在python中创建一个函数,可以用return语句指定返回的的值,这个返回值可以是任意的类型3、return语句在同一个函数中可以出现多次,但是只有有一个得到执行,就会直接结束函数的执行。return后面的语句不执行了4、return的格式re......
  • 【Python代码】如何根据出生日期计算出年龄?
    哈喽,大家好,木易巷来啦!假设我们有一个包含出生日期的Excel文件,需要计算每个人的年龄,你会怎么做呢?具体情况如下图:今天木易巷分享通过Python及其强大的pandas库,来实现从Excel文件中读取日期数据,计算年龄,并将结果存储回Excel文件中的过程。话不多说,开干!▍1、环境准备在开......
  • python 无法解密重音字符(如 è),我该怎么办?
    我正在解决这个ctf,您必须使用PyCryptodome模块通过DES加密消息。消息是“Launghezzadiquestafrasenonèdivisibileper8”(意大利语)。我无法将此消息转换为字节,因为重音字符不包含在utf-8中(我认为这就是解释)。有人可以帮我加密消息吗?fromCrypto.Util.Paddingimp......
  • Python笔记
    Python1变量1、什么是变量变量是关联一个对象的标识符变量可以绑定一个对象,并可以通过变量名使用这个对象2、变量的命名方法:以字母或下划线开头,后面跟字母、下划线或者数字3、python中的关键字不能用作变量名4、变量无类型,对象有类型5、在交互模式下查看当前作用域内的......
  • 如何在python中使用jdbc jar文件连接informix数据库
    有什么想法如何使用jdbcjar文件连接到informix数据库吗?在python我尝试了jaydebeapi,当我执行时:conn=jaydebeapi.connect('com.informix.jdbc.IfxDriver',myurl,['user','pass'],jdbc_driver_path)...然后从表中选择数据的其余代码当我执行myscript.py它只......
  • Python爬虫实战:实时微信推送奥运奖牌榜信息
    最近奥运会正在巴黎如火如荼地进行。为了能第一时间获得我国运动健儿的获奖情况,我给大家分享一个python爬虫项目——实时微信推送奥运奖牌榜信息。爬虫每隔5分钟抓取一次奥林匹克官网奖牌榜数据,对比上次抓取的数据,如果奖牌数量或者排名有变化,就将新的获奖信息推送到......
  • 基于Python实现可视化分析中国500强排行榜数据的设计与实现
    基于Python实现可视化分析中国500强排行榜数据的设计与实现“DesignandImplementationofVisualAnalysisforChina’sTop500CompaniesRankingDatausingPython”完整下载链接:基于Python实现可视化分析中国500强排行榜数据的设计与实现文章目录基于Python......
  • python使用selenium和PyPDF2保存多个html页面为pdf
    检索资料时看到比较完备的资料,想着要把所有页面保存下来。正好使用下requests和BeautifulSoup库获取和解析所有的静态页,把静态页保存为单个pdf文件,然后再把所有的pdf文件合并起来生成1个PDF文档。本来想使用python子进程调用wkhtmltopdf工具把静态页生成为单个pdf,然而如此一来pdf......
  • Python编码规范常用技巧
    Python编码规范常用技巧开场白:Python编码规范的艺术从一团乱麻到井然有序:我的Python代码进化史PEP8:Python编码规范的圣经为什么遵循编码规范如此重要命名约定:给你的代码起个好名字变量名:不只是标识符那么简单函数命名:让意图一目了然类与方法:面向对象的命名艺术代码结......
  • Python实现游戏中的音效制作与环境声音设计
    Python实现游戏中的音效制作与环境声音设计开场白:让声音活起来——游戏音频的魅力为什么游戏中的声音如此重要?个人体验分享:那些让人难忘的游戏音效Python在音频处理中的应用概览基础篇:Python环境搭建与音频库介绍快速入门:安装Python及必备音频处理库库推荐:pydub、soundf......