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

Python扩展继承类调用自定义方法报AttributeError

报错原因

触发该AttributeError的核心原因有两点:

  • 你通过继承语法编写的是原生derivation.Derivation的自定义子类,新增的autoderive方法只存在于这个子类中;但你实例化时调用的是原始父类的构造方法,生成的是原生类实例,原生类本身没有被修改,因此原生自带方法可正常调用,但找不到你在子类里新增的方法。
  • 你定义autoderive时声明了必填位置参数index,你测试调用时没有传入该参数,就算类逻辑修正后,漏传参数也会触发运行错误。
解决方法

根据二次开发的实际需求二选一即可:

方案1:使用自定义子类实例化

适合仅在自己新增的代码逻辑中使用新方法、不需要改动项目原有实例化逻辑的场景,只需要将实例化的目标类从原始父类替换为你自定义的子类:

from derivations import derivation

class Derivation(derivation.Derivation):
    def autoderive(self, index):
        # 在这里编写autoderive的具体实现逻辑
        pass

# 实例化自定义子类,不要调用原始父类的构造方法
deriv = Derivation()
# 调用时记得传入必填的index参数
deriv.autoderive(index=0)

方案2:通过猴子补丁给原始类扩展方法

适合需要让项目内所有已有的Derivation实例化逻辑都能直接调用新方法、不需要逐个修改原有实例化代码的场景,无需定义子类,直接给导入的原始类绑定新方法即可:

from derivations import derivation

def autoderive(self, index):
    # 在这里编写autoderive的具体实现逻辑
    pass

# 直接将新方法绑定到原始类上
derivation.Derivation.autoderive = autoderive

# 项目原有实例化逻辑不需要做任何改动,生成的实例可直接调用新方法
deriv = derivation.Derivation()
deriv.autoderive(index=0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 01:36:14