gpt4 book ai didi

python - 我应该在 eq 函数中测试对象标识吗

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

在实现 __eq__ 函数时,我想知道是否应该将使用 is 关键字的身份测试作为测试的一部分?当变量指向同一个对象实例时,is 函数可以立即对 2 个不同变量进行相等性测试,结果为 True。如果变量指向不同的实例,当然需要进一步测试。假设我们有 S = U 那么显然我们希望 S == U 返回 True 并且身份测试将加快速度。

def __eq__(self, other):
if self is other:
return True
else:
pass # do another user defined test for equality

最佳答案

您可以实现这一点,尽管对于大多数用例来说它可能只是一个微观优化。这种优化思想被 Python 核心开发人员应用到他们如何为 list 实现 in 运算符;代码是 C(在 CPython 中)但是 equivalent Python logic会是:

any(element is target or element == target for element in lst)

但是,请注意这可能不是您想要的,例如,numpy.NAN 是 numpy.NANTruenumpy.NAN = = numpy.NANFalse。然而,这是一个 unusual case .

关于python - 我应该在 eq 函数中测试对象标识吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49429308/

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