首页 > 解决方案 > 如何让子类中的构造函数继承构造函数或基类?

问题描述

我有以下代码段,其输出如下所示

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
        super(AbstractClass,self).__init__()
 
emp1 = Employee(1000000, "Tom")
print(emp1.salary)
print(emp1.name)

我想让子类,例如Employee,也可以继承在构造函数中实现的功能AbstractClass。具体来说,print('the salary information')我补充说:

super(AbstractClass,self).__init__()  # which does not work

标签: pythonpython-3.xabstract-classabc

解决方案


您需要将 CURRENT 类传递给super,而不是父类。所以:

        super(Employee,self).__init__()

Python 将确定调用哪个父类。

当您这样做时,它将不起作用,因为AbstractClass.__init__需要您未提供的附加参数。

跟进

已经正确地指出,这就足够了:

        super().__init__(0)

推荐阅读