【发布时间】:2020-09-25 15:02:55
【问题描述】:
我有这个类,我只想将它的两个初始化参数继承给子类
注意
在这里,我对 Employee 和 Manager 没有任何顾虑,但我一般询问语法,即我的子类中的 init() 方法是否正确?或者我需要在超类中获取确切数量的参数
class Employee:
def __init__(self,Ename,Eid,Esalary):
self.Ename = Ename
self.Eid = Eid
self.Esalary = Esalary
def emp_details(self):
print(f"The employee name is {self.Ename}")
class Manager(Employee):
def __init__(self,Ename,Esalary):
super().__init__(Ename,Esalary)
e1 = Employee("TestE","A12E",12000)
mgr_1 = Manager("TestM",100000)
但它抛出一个错误
类型错误:__init__() 缺少 1 个必需的位置参数:'Esalary'
以及如何只继承它的两个__init()__参数
【问题讨论】:
-
您已经编写了
Employee,因此要创建Employee,您必须提供Eid。Manager是Employee,所以Eid必须来自某个地方。 -
为什么经理没有身份证?如果不是,它可能不应该从
Employee继承,或者 id 并不是所有员工的真正属性,而是Employee的不同子类。 -
super().__init__(...)中的第三个参数必须填写一些内容。也许“无”就足够了。 -
作为一般规则,您可以向子类添加东西,但不能删除东西。
-
@khelwood 想象一个经理没有任何开斋节一般情况下如何只继承它的两个参数
标签: python oop inheritance super