在测试中,我需要比较一个类的2个对象对每个类属性具有相同的值。我不需要在测试之外比较该类的2个对象。
在我的课程中实施 eq 是否更好(即使生产代码不需要它),或者只是比较每个 dict 更好我的测试中的对象?像这样:
assert_equals(obj1.__dict__, obj2.__dict__)
如果我在课堂上实现它,那么我可以说:
assert_equals(obj1, obj2)
答案 0 :(得分:3)
当然,两者都有效,但我建议实施__eq__
,因为:
__eq__
方法可以继承,如果您已经需要评估测试中的相等性,那么您永远不会知道 - 您的生产代码可能将来很好地需要这个功能。答案 1 :(得分:1)
__dict__
并且遗产在这方面并不能很好地发挥作用。如果你想比较某些东西,并且确实比较有意义,那么我会说在课堂上实施 eq 或 cmp 。