测试平等
Testing equality
我有两个不同的对象,a
和 b
,它们具有相同的属性和值(即它们是等价的)。我知道 a is b
应该计算为 False
,因为 a
和 b
不相同,但 a==b
也计算为 False
。这是为什么?
感谢阅读!
(对于上下文,对象是 Biopython SeqFeatures
)
编辑 - 我是怎么得到 a 和 b
我用一个大脚本构建了一个 SeqFeatures 列表 (A
)。然后,我用脚本的功能化等价物构建了第二个列表 (B
)。 a
和 b
是 A[0]
和 B[0]
。我想测试等价性以确保函数的输出与原始脚本的输出相同。
a = A[0]
b = B[0]
a == b # --> False
从 Biopython docs 中,class Bio.SeqFeature.SeqFeature
没有实现 __eq__
方法,从文档中,class' 基础object
class,所以如果你检查两个 Bio.SeqFeature.SeqFeature
对象的相等性,它会检查它们在内存中的 id
s 是否相等,我认为这是不同的,特别是如果它们是单独创建的。
如果 class 没有定义 __eq__
方法,则从 object
继承的默认方法使用 is
比较对象。因此,除非您定义此方法,否则 a == b
等同于 a is b
.
Biopython 库需要实现一个 __eq__
方法来比较属性,使 return True
.
我有两个不同的对象,a
和 b
,它们具有相同的属性和值(即它们是等价的)。我知道 a is b
应该计算为 False
,因为 a
和 b
不相同,但 a==b
也计算为 False
。这是为什么?
感谢阅读!
(对于上下文,对象是 Biopython SeqFeatures
)
编辑 - 我是怎么得到 a 和 b
我用一个大脚本构建了一个 SeqFeatures 列表 (A
)。然后,我用脚本的功能化等价物构建了第二个列表 (B
)。 a
和 b
是 A[0]
和 B[0]
。我想测试等价性以确保函数的输出与原始脚本的输出相同。
a = A[0]
b = B[0]
a == b # --> False
从 Biopython docs 中,class Bio.SeqFeature.SeqFeature
没有实现 __eq__
方法,从文档中,class' 基础object
class,所以如果你检查两个 Bio.SeqFeature.SeqFeature
对象的相等性,它会检查它们在内存中的 id
s 是否相等,我认为这是不同的,特别是如果它们是单独创建的。
如果 class 没有定义 __eq__
方法,则从 object
继承的默认方法使用 is
比较对象。因此,除非您定义此方法,否则 a == b
等同于 a is b
.
Biopython 库需要实现一个 __eq__
方法来比较属性,使 return True
.