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

Python子类继承父类异常:调用父类__init__后仍提示属性不存在?

问题原因
  • 属性命名和调用不匹配是核心问题:父类Person的__init__方法中,仅将传入的fname、lname参数分别赋值给了实例的firstname、lastname属性,没有创建任何名为fname、lname的实例属性。
  • 你调用父类初始化的逻辑本身没有问题,Teacher类的实例已经成功继承到了firstname、lastname两个属性,报错只是因为打印时写错了目标属性名。
修复方案

以下两种修改方式二选一即可正常运行:

  1. 调整打印语句的属性名,将报错对应的两行代码替换为:
print(teacher_1.firstname)
print(teacher_1.lastname)
  1. 如果你需要使用fname、lname作为属性名,修改父类Person的初始化赋值逻辑:
def __init__(self, fname, lname):
    self.fname = fname
    self.lname = lname

补充优化建议

你当前调用父类初始化的写法Person.__init__(self, fname, lname)是可用的,更符合Python规范的写法是使用super()方法,不需要硬编码父类名称,后续修改父类时无需调整这部分代码:

def __init__(self, fname, lname, schoolgrade):
    super().__init__(fname, lname)
    self.schoolclass = schoolgrade

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:45:05