实例化类时已填参数仍报__init__缺少number参数的TypeError是什么原因
报错原因及解决方案
核心报错原因
你的代码在执行到employee1 = ProductionWorker(Employee)这一行时就已经触发错误,原因如下:
- 你定义的
ProductionWorker类的__init__方法要求传入name、number两个必填位置参数(self为实例自动填充的参数,无需手动传入),但你实例化时仅传入了Employee一个参数,缺少第二个必填参数number,直接触发类型错误。 - 对
__init__方法的调用逻辑理解错误:__init__是类的构造初始化方法,会在你使用类名(初始化参数)创建实例时自动执行,不需要实例创建完成后手动调用。 - 类继承的语法使用错误:如果
ProductionWorker是继承自Employee的子类,父类声明需要写在类定义阶段,格式为class ProductionWorker(Employee):,而非实例化时把父类当参数传入。
额外优化提示
你当前给实例属性命名使用的__name__、__number__是Python内置魔法成员的专用命名格式,自定义属性不要使用这种命名规则,避免和内置逻辑冲突,建议改为普通命名如name、_name、__name即可。
修正后的代码示例
# 先获取初始化需要的参数 name = input("Enter employee name:") number = input("Enter employee number:") # 实例化时直接传入参数,自动调用__init__完成初始化 employee1 = ProductionWorker(name, number)
内容的提问来源于stack exchange,提问作者Aiden Douglas
相关产品推荐
相关产品推荐

