2

我对正在发生的事情最感兴趣,但可以说我有一个自定义类,实现了 __eq__ ,没有别的。

其他比较如何解决?默认行为是什么?每次进行比较时,我都会得到不同的结果。我知道我需要实现这些,并且我也可以用它@total_ordering来简化工作。

幕后究竟发生了什么?这主要是出于好奇。

4

2 回答 2

5

如果__lt__未定义,则使用比较__cmp__。如果未定义,则使用默认比较器。似乎默认比较器通过“对象标识(地址)”进行比较。

有关详细信息,请参阅文档__cmp__

于 2013-03-09T02:19:06.330 回答
1

Python 文档这一部分的一些附加信息:

不同类型的对象,除了不同的数值类型和不同的字符串类型,从不比较相等;此类对象的排序一致但任意(因此对异构数组进行排序会产生一致的结果)。

CPython 实现细节:除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。

于 2013-03-09T02:23:27.403 回答