我对正在发生的事情最感兴趣,但可以说我有一个自定义类,实现了 __eq__ ,没有别的。
其他比较如何解决?默认行为是什么?每次进行比较时,我都会得到不同的结果。我知道我需要实现这些,并且我也可以用它@total_ordering
来简化工作。
幕后究竟发生了什么?这主要是出于好奇。
我对正在发生的事情最感兴趣,但可以说我有一个自定义类,实现了 __eq__ ,没有别的。
其他比较如何解决?默认行为是什么?每次进行比较时,我都会得到不同的结果。我知道我需要实现这些,并且我也可以用它@total_ordering
来简化工作。
幕后究竟发生了什么?这主要是出于好奇。
如果__lt__
未定义,则使用比较__cmp__
。如果未定义,则使用默认比较器。似乎默认比较器通过“对象标识(地址)”进行比较。
有关详细信息,请参阅文档__cmp__
。
Python 文档这一部分的一些附加信息:
不同类型的对象,除了不同的数值类型和不同的字符串类型,从不比较相等;此类对象的排序一致但任意(因此对异构数组进行排序会产生一致的结果)。
CPython 实现细节:除数字外的不同类型的对象按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。