微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

测试平等

如何解决测试平等

我有两个不同的对象,ab,它们具有相同的属性和值(即它们是等效的)。我知道 a is b 应该评估为 False,因为 ab 不相同,但 a==b 也评估为 False。这是为什么?

感谢阅读!

(对于上下文,对象是 Biopython SeqFeatures

编辑 - 我是如何得到 a 和 b

我用一个大脚本构建了一个 SeqFeatures 列表 (A)。然后我构建了第二个列表 (B),其中包含脚本的功能化等效项。 abA[0]B[0]。我想测试等效性以确保函数输出与原始脚本的输出相同。

a = A[0] 
b = B[0]
a == b # --> False 

解决方法

从 Biopython docs 来看,类 Bio.SeqFeature.SeqFeature 没有实现 __eq__ 方法,从文档来看,类的基类在 object 类中,所以如果您检查两个 Bio.SeqFeature.SeqFeature 对象是否相等,它会检查它们在内存中的 id 是否相等,我认为它们是不同的,尤其是如果它们是单独创建的。

,

如果类没有定义 __eq__ 方法,则继承自 object 的默认方法使用 is 比较对象。因此,除非您定义此方法,否则 a == b 等效于 a is b

Biopython 库需要实现一个 __eq__ 方法来比较属性以使其返回 True

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。