【发布时间】:2018-03-22 12:56:55
【问题描述】:
在实现__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
【问题讨论】:
-
我一般不会说,除非你的
__eq__因某种原因很贵。例如,如果您只检查某些成员是否相等,即使它们是“复杂的”(如字符串或列表),Python 的内部实现肯定会进行检查。我可能会这样做的一个例子是树数据结构。