在实现__eq__
函数时,我想知道使用is
关键字测试身份是否应该是测试的一部分?当变量指向同一个对象实例时,is
函数可以立即对两个不同变量的相等性进行测试。如果变量指向不同的实例,当然还需要进一步的测试。假设我们有S = U
,那么显然我们希望S == U
返回True
,身份测试将加快这一速度。你知道吗
def __eq__(self, other):
if self is other:
return True
else:
pass # do another user defined test for equality
Tags:
您可以实现这一点,尽管对于大多数用例来说,这可能是一个微小的优化。Python核心开发人员应用了这个优化思想,他们实现了
in
操作符来实现list
;代码是C(在CPython中),但是equivalent Python logic应该是:但是,请注意这可能不是您想要的,例如,
numpy.NAN is numpy.NAN
是True
,而numpy.NAN == numpy.NAN
是False
。然而,这是一个unusual case。你知道吗相关问题 更多 >
编程相关推荐