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

Python代码调试求助:解决类继承中的TypeError参数不匹配问题

问题分析与解决

错误原因

  1. 参数数量不匹配:hack类的__init__方法仅定义了year参数(加上默认的self共2个参数),但实例化时传入了'mahdi'和19两个实参,加上self就变成了3个参数,触发TypeError。
  2. 未传递父类所需参数:子类调用父类构造方法super().__init__(name, number)时,name和number这两个变量在子类__init__中未定义,会引发后续的NameError。

修复方案

让子类hack的构造方法接收父类所需的name、number参数,同时保留自身的year参数,再将name和number传递给父类构造方法完成初始化。

修正后的代码

import os
os.system('cls')

class test :
    def __init__(self, name ,number):
        self.name=name
        self.number=number

    def add(self):
        return f' I am a  {self.name}  my love  program'

class hack (test):
    def __init__ (self, name, number, year):
       super().__init__(name, number)
       self.year=year

p=hack('mahdi', 123, 19)  # number需传入对应值,可根据实际需求调整
print(p.add())

如果需要调整参数顺序,保证父类参数传递正确即可,比如:

class hack (test):
    def __init__ (self, year, name, number):
       super().__init__(name, number)
       self.year=year

p=hack(19, 'mahdi', 123)
print(p.add())

补充说明

子类继承父类并重写__init__方法时,必须显式调用父类的__init__方法并传递所需参数,否则父类的属性无法完成初始化;实例化子类时,传入的参数数量和顺序必须与子类__init__方法的定义一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:57:26