gpt4 book ai didi

python - 为什么我的简单 __eq__ 实现给出了 AssertionError?

转载 作者:行者123 更新时间:2023-11-28 22:52:54 26 4
gpt4 key购买 nike

我正在尝试在 Python 3.3 中实现一个标准的相等运算符,遵循其他问题的代码示例。我收到一个断言错误,但我无法弄清楚哪里出了问题。我在这里错过了什么?

class RollResult:
def __init__(self, points, unscored_dice):
self.points = points
self.unscored_dice = unscored_dice

def __eq__(self, other):
return (self.points == other.points and self.unscored_dice == other.unscored_dice)

这是测试。许多其他测试都通过了,所以基本设置是正确的。这是我对该类的第一次测试,我以前从未尝试过单元测试相等性重载,所以它也可能是测试的错误。

class TestRollResultClass(unittest.TestCase):
def test_rollresult_equality_overload_does_not_test_for_same_object(self):
copy1 = RollResult(350,2)
copy2 = RollResult(350,2)
self.assertNotEqual(copy1,copy2)

结果:

AssertionError: <greed.RollResult object at 0x7fbc21c1b650> == <greed.RollResult object at 0x7fbc21c1b650>                                        

最佳答案

您的 __eq__() 似乎工作正常。您正在使用 assertNotEqual(),如果两个参数相等,这将引发 AssertionError。您为断言中使用的每个 RollResult 对象提供了相同的参数,因此它们相等,因此失败。

看起来您要么想使用 assertEqual(),要么更改它,使 copy1copy2 的构造不同。

关于python - 为什么我的简单 __eq__ 实现给出了 AssertionError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com