You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

collections.deque断言失败求助:为何断言不成立及正确写法?

问题原因

你触发断言错误的核心原因是:queue_challenge()返回的是你自定义的Queue类的实例,而不是deque对象。虽然print语句因为你实现了__str__方法,会输出和内部deque一样的字符串,但这只是显示层面的等价,实际对象类型完全不同——一个是Queue实例,一个是deque实例,用==比较时会直接返回False。

正确的断言写法

有两种常见的解决方式:

方式一:直接比较Queue实例的内部deque属性

既然你的Queue类把deque存在items属性里,直接断言这个属性等于目标deque即可:

assert queue_challenge().items == deque(['great', 'fun'])

方式二:给Queue类实现__eq__方法

如果你希望Queue实例能直接和deque(或者其他Queue实例)用==比较,可以在Queue类里添加__eq__方法,定义相等的规则:

class Queue:
    # 其他原有方法不变
    def __eq__(self, other):
        # 可以处理和deque比较,也可以处理和其他Queue实例比较
        if isinstance(other, deque):
            return self.items == other
        elif isinstance(other, Queue):
            return self.items == other.items
        return False

之后原来的断言就能正常工作了:

assert queue_challenge() == deque(['great', 'fun'])

内容的提问来源于stack exchange,提问作者Robin Andrews

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:55:00