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

如何继承C实现的Python类并添加方法?解决继承报错问题

解决继承C扩展LRU类的报错问题

出现“type ‘type’ is not an acceptable base type”错误的核心原因是:你使用的LRU是C语言实现的扩展类型,并非标准Python类,它没有提供被Python类继承的支持,因此无法直接作为父类使用。

推荐解决方案:用组合替代继承

通过在自定义类内部维护一个LRU实例,代理LRU的核心操作方法,同时添加自定义功能,这是扩展C扩展类型的常规且安全的做法:

from lru import LRU

class A:
    def __init__(self, max_size):
        # 初始化内部的LRU实例
        self._lru = LRU(max_size)
    
    # 代理LRU的常用操作方法,按需添加
    def __getitem__(self, key):
        return self._lru[key]
    
    def __setitem__(self, key, value):
        self._lru[key] = value
    
    def get(self, key, default=None):
        return self._lru.get(key, default)
    
    def pop(self, key):
        return self._lru.pop(key)
    
    def clear(self):
        self._lru.clear()
    
    # 添加你需要的自定义方法
    def foo(self):
        print("a")

使用示例

# 创建A的实例,指定LRU最大容量
a_instance = A(max_size=100)
# 像使用原生LRU一样进行键值对操作
a_instance["name"] = "test"
print(a_instance.get("name"))
# 调用自定义方法
a_instance.foo()

不推荐的方案:猴子补丁

虽然可以通过动态给LRU类型添加方法实现需求,但这种方式会修改原类型的全局行为,可能引发意外的兼容性问题,因此不建议在生产代码中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 20:54:57