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

如何创建仅保留append方法的自定义collections.deque子类并移除appendleft方法?

解决自定义Deque类移除appendleft方法的问题

首先,你遇到的问题根源在于:Python不允许直接修改内置/扩展类型(比如collections.deque)的属性。内置类型的方法是受保护的,不能通过del或者直接赋值来改动,这就是为什么你会看到TypeError: can't set attributes of built-in/extension type 'collections.deque'这个错误。

正确的实现方式

不需要修改父类,我们只需要在自定义子类中覆盖appendleft方法,让它抛出符合预期的AttributeError即可:

from collections import deque

class CustomDeque(deque):
    def appendleft(self, *args, **kwargs):
        raise AttributeError("'CustomDeque' object has no attribute 'appendleft'")

验证效果

运行测试代码:

custom_deque = CustomDeque()
custom_deque.appendleft()

会得到你期望的错误输出:

AttributeError Traceback (most recent call last)
----> 1 custom_deque.appendleft()
AttributeError: 'CustomDeque' object has no attribute 'appendleft'

额外说明

如果你的需求是彻底让appendleft从类的属性列表中消失(比如用dir(custom_deque)看不到它),可以用更进阶的方式(比如自定义__getattribute__或使用元类),但对于绝大多数场景来说,上面的方法已经完全够用——它既阻止了appendleft的调用,又抛出了和“属性不存在”完全一致的错误信息,完美匹配你的需求。

内容的提问来源于stack exchange,提问作者Daniel Tomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:47:28