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

Python继承类报错:takes 4 positional arguments but 5 were given

问题修复说明

报错原因

你的Developer子类构造函数名称写错了——Python要求类的构造函数必须是__init__(前后各两个下划线),但你写成了init。因为没有正确定义子类的构造函数,Python会自动调用父类Employee的__init__方法,而父类的__init__只接受name, email, role三个参数(加上默认的self共4个),但你创建Developer实例时传了4个参数(加上self共5个),所以触发参数不匹配的报错。

修复后的代码

class Employee:
    location = "Riverside, CA"
    def __init__(self, name, email, role):
        self.name = name
        self.email = email
        self.role = role
    def get_info(self):
        print("Name: {0}, Email: {1}, Role: {2}".format(self.name, self.email, self.role))

class Developer(Employee):
    # 修正构造函数名称为__init__
    def __init__(self, name, email, role, language):
        super().__init__(name, email, role)
        self.language = language
    # 可选:更新get_info,显示编程语言信息
    def get_info(self):
        print("Name: {0}, Email: {1}, Role: {2}, Language: {3}".format(self.name, self.email, self.role, self.language))

employee_1 = Developer("Mickey Mouse", "mmouse@disney.com", "Lead Character", "Python")
employee_2 = Developer("Donald Duck", "dduck@disney.com", "Bad character", "FORTRAN")

# 测试调用
employee_1.get_info()
employee_2.get_info()

额外说明

修复构造函数后,子类就能正确接收language参数并初始化。另外建议更新Developer的get_info方法,把新增的language属性也打印出来,这样子类的特有属性才能被展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 16:30:59