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

继承与模块同名的基类时出现TypeError参数过多问题排查

问题分析与解决方案

项目结构

- equalizer
    - __init__.py
    - equalizer.py
    - lms.py
- main.py

错误原因

报错核心有两个问题:

  1. 导入混淆:lms.py里的from equalizer import equalizer实际导入的是equalizer包,而非equalizer.py文件中的equalizer类。因为包名、模块名、类名完全重名,Python将equalizer识别为包,导致你试图继承一个模块而非类,触发TypeError。
  2. super调用冗余:即便导入正确,super().__init__(self, data)也多传了self参数——Python3中super()会自动绑定当前实例,无需手动传入self。

修复步骤

1. 修正lms.py代码

修改后的lms.py如下(两种导入方式二选一即可):

方式一:相对导入(推荐,适合当前包内引用)

from .equalizer import equalizer

class lms(equalizer):
    def __init__(self, data):
        super().__init__(data)

    def lms(self):
        print('Hello World!')

方式二:绝对导入(适合复杂项目结构)

from equalizer.equalizer import equalizer

class lms(equalizer):
    def __init__(self, data):
        super().__init__(data)

    def lms(self):
        print('Hello World!')

2. 验证运行

main.py的代码无需修改,修复lms.py后直接运行main.py即可正常输出Hello World!。

额外建议

Python规范中类名推荐使用大驼峰命名法,比如将equalizer类改为Equalizer、lms类改为Lms,能彻底避免模块名与类名重名的混淆问题,代码可读性也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:05:19