Python实例化employee类报缺少必需位置参数emp1错误如何解决
报错原因
你遇到的missing 1 required positional argument报错核心是构造方法写错了:
- Python类的初始化构造方法固定命名为
__init__(双下划线开头+init+双下划线结尾),你写了个和类同名的employee普通方法,根本不会在实例化的时候被调用。Python会给没有自定义构造方法的类默认生成一个只接收self参数的无参构造,你实例化的时候传了name和salary两个参数,和默认构造的参数不匹配,就抛出了缺参数的错误。 - 代码里还有几个隐藏的运行错误:
- 类名大小写不统一:定义类用的是小写
employee,displayCount方法里调用类属性写的是大写Employee,运行到这行会报名称错误。 - 方法名拼写错误:展示员工信息的方法名
displyEmployee漏了字母a,正确拼写是displayEmployee,调用时会找不到方法。 - print语句写法错误:你在
displayCount里写的print ("\nTotal Employee %d", Employee.empCount)不会自动替换占位符,会直接把%d当成普通字符串打印。 - 代码里所有句尾的分号都是冗余的,Python不要求语句结尾加分号,写了不报错但不符合编码规范。
- 类名大小写不统一:定义类用的是小写
修复后可运行代码
class Employee: empCount = 0 def __init__(self, name, salary): self.name = name self.salary = salary Employee.empCount += 1 def displayCount(self): print(f"\nTotal Employee {Employee.empCount}") def displayEmployee(self): print('Name:', self.name, 'Salary:', self.salary) emp1 = Employee('ABS', 2000) # 功能测试调用 emp1.displayEmployee() emp1.displayCount()
修复点说明
- 把原代码里和类同名的方法重命名为
__init__,作为类的正式构造方法,实例化传参时可以正常接收参数,从根源解决缺位置参数的报错。 - 统一类名为大写开头的
Employee,修正方法名的拼写错误。 - 用f-string替换原来错误的占位符写法,保证计数打印正常。
- 去掉所有冗余的句尾分号。
内容的提问来源于stack exchange,提问作者Abdelrahman Hassan
相关产品推荐
相关产品推荐

