gpt4 book ai didi

python - 在 __eq__ 中检查身份是否有意义?

转载 作者:太空狗 更新时间:2023-10-29 20:48:31 25 4
gpt4 key购买 nike

为类实现自定义相等函数时,首先检查身份是否有意义?一个例子:

def __eq__(self, other):
return (self is other) or (other criteria)

这很有趣,适用于其他标准可能更昂贵的情况(例如比较一些长字符串)。

最佳答案

首先检查身份可能是一个非常合理的捷径,在相等方法中,好的捷径(对于相等和不相等)是您应该寻找的,以便您可以尽快返回。

但是,另一方面,如果您的相等性测试在其他方面很便宜并且您在实践中不太可能将对象与自身进行比较,那么它也可能是一个完全多余的检查。

例如,如果可以通过比较一个或两个整数来衡量对象之间的相等性,那么这应该比身份测试更快,所以比比较 id 所花费的时间要少得到了完整的答案。请记住,如果您检查身份并且对象不具有相同的 id(这在大多数情况下很可能)那么您将一无所获,因为您仍然需要完成所有工作检查。

因此,如果完全相等性检查并不便宜,并且有可能将对象与自身进行比较,那么首先检查身份可能是个好主意。


请注意,默认情况下不进行检查的另一个原因是,将具有相同标识的对象比较为不相等的对象是非常合理的(尽管很少见),例如:

>>> s = float('nan')
>>> s == s
False

关于python - 在 __eq__ 中检查身份是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3180004/

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