Python集合运算符符号到方法名称的映射是什么?它们与文档不符

问题描述 投票:0回答:1

我创建了自己的Customset类,它实现了Python集合的几乎所有方法。 当我使用此自定义集的实例时,许多集合运算符都会失败。他们失败的原因类似于:

TypeError:不支持的操作数类型 -:'Customset' 和 Customset'

类型错误:'<=' not supported between instances of 'Customset' and Customset'

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

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

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

python operator-overloading operators
1个回答
0
投票

是的,自定义集合类的

<operator>
==>
<method>
映射确实与内置集合类的映射不同。自定义类的定义中没有任何内容告诉 python 使用与 set 实例的唯一映射相同的映射。 实际的映射似乎都是这些运算符的正常魔法 dunder 方法:

-  ==> __sub__

-= ==> __isub__

&  ==> __and__

&= ==> __iand__

<  ==> __lt__

<= ==> __le__

>  ==> __gt__

>= ==> __ge__

^  ==> __xor__

^= ==> __ixor__

|  ==> __or__

|= ==> __ior__

== ==> __eq__

© www.soinside.com 2019 - 2024. All rights reserved.