如何解决具有多个值的类继承返回typeError
class Employees:
def __init__(self,name,dob,contact,email,address):
self.name = name
self.dob = dob
self.contact = contact
self.email = email
self.address = address
def __str__(self):
return 'Employees class with basic information '
class Clerks(Employees):
def __init__(self):
Employees.__init__(self)
def overtime(self):
pass
class Supervisor(Employees):
def __init__(self):
super().__init__()
def get_on_the_piss():
pass
john = Supervisor('toto','tata','titi','tete','tutu')
TypeError: __init__() takes 1 positional argument but 6 were given
我做到了
john = Supervisor()
TypeError: __init__() missing 5 required positional arguments: 'name','dob','contact','email',and 'address'
我试图简化问题,所以我不发帖。
Clerks class return same result too,super(Supervisor,self).__init__() also same result
我研究了很多解决方案,但是没有一个是完全相同的,没有关键词我就找不到任何相关文档。
解决方法
Employees
包含5个参数,因此您需要将它们从Supervisor/Clerks
传递到其基类。
您可以使用*args
和**kwargs
来缩短代码,或者Supervisor/Clerks
至少需要使用与Employees
相同的参数。
class Employees:
def __init__(self,name,dob,contact,email,address):
self.name = name
self.dob = dob
self.contact = contact
self.email = email
self.address = address
def __str__(self):
return 'Employees class with basic information '
class Clerks(Employees):
def __init__(self,address):
super(Clerks,self).__init__(name,address)
def overtime(self):
pass
class Supervisor(Employees):
def __init__(self,*args,**kwarg):
super(Supervisor,self).__init__(*args,**kwarg)
def get_on_the_piss():
pass
john = Supervisor('toto','tata','titi','tete','tutu')
print(john.name)
clara = Clerks('clara','tutu')
print(clara.name)
输出:
toto
clara
,
问题是Supervisor类继承了雇员类,该类需要在对象声明时传递必需的参数(即-名称,dob,联系人,电子邮件,地址)。
因此,在创建john对象时,您需要传递这些参数。就像:
john = Supervisor('John','12/4/2020','97353','emailid@host.com','India')
与店员班相同:
clerk1= Supervisor('Rohan','India')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。