You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类定义中==正常但!=运算符报错的问题排查

问题分析与修复方案

嘿,这个小错误其实很好定位!你在__ne__方法里调用__eq__的时候多传了一个参数,直接导致了类型错误。

错误原因

你看,__eq__是类的实例方法,它的定义是def __eq__(self, other)——第一个参数self是Python自动传入的当前实例。而你在__ne__里写的是:

return not self.__eq__(self, other)

这相当于手动把self又传了一次,加上Python自动传入的self,__eq__一共收到了3个参数(自动的self + 你传的self + other),但它只接受2个参数,所以就抛出了TypeError。

修复方法

只需要去掉__eq__调用里多余的self参数就行:

def __ne__(self, other):
    """ != comparison method."""
    return not self.__eq__(other)

更简洁的写法(推荐)

其实在Python 3里,如果你已经定义了__eq__,解释器会自动帮你实现__ne__,逻辑就是对__eq__的结果取反。所以你完全可以删掉整个__ne__方法,代码会更简洁,而且不会出错。

修复后再测试:

D1 = Dummy(1, 2, 3)
D2 = Dummy(1, 4, 5)
print(D1 == D2)  # 输出 False,符合预期
print(D1 != D2)  # 输出 True,正常工作

内容的提问来源于stack exchange,提问作者Mathieu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:29:17