如何解决我的父类__init __有三个参数,我只想使用其中两个参数?
我有这个类,我只想将其初始化参数中的两个继承给子类
注意
在这里,我对员工和经理没有任何担心,但我通常会询问语法,即子类中的 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,Esalary):
super().__init__(Ename,Esalary)
e1 = Employee("TestE","A12E",12000)
mgr_1 = Manager("TestM",100000)
但是它抛出一个错误
TypeError:__init__()
缺少1个必需的位置参数:“ Esalary”
以及如何仅继承其两个__init()__
参数
解决方法
您在Employee的构造函数中缺少参数。在Employe的构造函数中,您有3个参数,下面只给出了2个,因此请务必给它3个。
,由于Manager是Employee的子类,因此Manager也是Employee ...,根据这种逻辑,Manager也应该具有Eid。
如果您的问题仅用于教育目的,则必须调用super()。 init (带有3个参数)。
如果您要问的是某个真实的项目,并且您非常确定Manager不应该具有Eid,那么请重新考虑更改类设计(即删除类继承)。
,从技术上讲,下面的事情是可能的,但毫无意义。
class Manager(Employee):
def __init__(self,Ename,Esalary):
super().__init__(Ename,None,Esalary)
但是,以下内容可能具有一定的含义(但不是一种很好的做法)。
class Employee:
def __init__(self,designation,Esalary):
self.Ename = Ename
self.designation = designation
self.Esalary = Esalary
def emp_details(self):
print(f"The employee name is {self.Ename}")
class Manager(Employee):
def __init__(self,Esalary):
super().__init__(Ename,'Manager',Esalary)
,
尝试一下:
class Employee:
def __init__(self,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,Esalary):
Eid=""
super().__init__(Ename,Esalary)
e1 = Employee("TestE","A12E",12000)
mgr_1 = Manager("TestM",100000)
mgr_1.emp_details()
,
尝试将“无”值分配给第三个参数。做这样的事情:
class Manager(Employee):
def __init__(self,Esalary):
self.Eid = None
super().__init__(Ename,Esalary)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。