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

Python中子类如何正确继承抽象基类构造函数的已实现功能?

Python 抽象类子类继承父类构造逻辑的修正方案

你原有代码的错误来自两处:

  • super()参数配置错误:super(AbstractClass, self)的作用是查找AbstractClass的父类方法,自然不会执行AbstractClass自身的构造逻辑。Python 3中可直接使用无参super()指代当前子类的父类,也可以显式写为super(Employee, self)。
  • 父类构造参数不匹配:AbstractClass的__init__方法要求传入参数n,你调用时没有传参会触发参数校验报错。

以下是修正后的可运行代码:

from abc import ABCMeta, abstractmethod
  
class AbstractClass(object, metaclass=ABCMeta):
    @abstractmethod
    def __init__(self, n):
        self.n = n
        print('the salary information')
 
 
class Employee(AbstractClass):
    def __init__(self, salary, name):
        self.salary = salary
        self.name = name
        # 调用父类构造函数,可根据业务需求传入对应参数给n,此处示例传入薪资
        super().__init__(salary)
 
emp1 = Employee(1000000, "Tom")
print(emp1.salary)
print(emp1.name)

运行后会先输出the salary information,再依次输出薪资和姓名,符合你要复用父类构造逻辑的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 07:57:03