gpt4 book ai didi

python - NotImplemented 的类型是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 13:25:38 26 4
gpt4 key购买 nike

我有以下功能:

   def __eq__(self, other: object) -> Union[bool, NotImplemented]:
try:
for attr in ["name", "variable_type"]:
if getattr(self, attr) != getattr(other, attr):
return False
return True
except AttributeError:
return NotImplemented # Expression has type "Any"

我正在运行 mypy,它告诉我 NotImplemented 是“Any”类型,它显然不喜欢这种类型。

有没有更好的类型可以用来消除这个错误?还是我应该放一个 type: ignore 然后继续? (此外,我在返回类型中使用 NotImplemented 是否正确?)

最佳答案

它是NotImplementedType

type(NotImplemented)                                                                                                                
# NotImplementedType

也就是说,你可以这样定义你的函数:

def foo(self, other: object) -> Union[bool, type(NotImplemented)]: 
pass

现在,help(foo) 给出,

help(foo)                                                                                                                           
# Help on function foo in module __main__:
#
# foo(self, other:object) -> Union[bool, NotImplementedType]

顺便说一句,值得一提的是 NotImplemented 是一个用于非常特定目的的单例对象(它用于指示未在对象上定义特定操作)。您几乎从来不需要真正访问它的类型,而且据我所知,您可以从任何地方导入 NotImplementedType

我只是将 __eq__ 定义为

def foo(self, other: object) -> bool: 
pass

当返回NotImplemented时,应该理解它不是一个有效的结果,而是相等比较无效的指示。

关于python - NotImplemented 的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615826/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com