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

Python中能否重载is运算符?使MyClass() is None返回True

没办法实现这个需求

首先明确:Python里的is运算符不支持通过重载任何方法来修改行为,所以你没法让MyClass() is None返回True。

原因很直接:

  • is是用来比较两个对象的身份(内存地址),它的逻辑是直接对比对象的底层标识(对应id()的返回值),这个行为是Python解释器内置的,完全绕开了对象的方法调用。
  • 你创建的MyClass()是一个全新的实例,它的内存地址和None这个单例对象的地址绝对不可能相同,所以is的结果永远是False。

你可能混淆了is和==:==运算符会调用对象的__eq__方法,如果你重载这个方法,可以让MyClass() == None返回True,比如:

class MyClass:
    def __eq__(self, other):
        return other is None

print(MyClass() == None)  # 输出 True
print(MyClass() is None)  # 输出 False

但is的逻辑是解释器层面硬定的,没有任何办法通过类的方法去篡改它的对比结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:35:55