【问题标题】:TypeError: __init__() takes 4 positional arguments but 7 were givenTypeError: __init__() 接受 4 个位置参数,但给出了 7 个
【发布时间】:2018-04-25 15:22:07
【问题描述】:
class Employee(object):
    def __init__(self,ename,salary,dateOfJoining):
        self.ename=ename
        self.salary=salary
        self.dateOfJoining=dateOfJoining
    def output(self):
        print("Ename: ",self.ename,"\nSalary: ",self.salary,"\nDate Of 
Joining: ",self.dateOfJoining)
class Qualification(object):
    def __init__(self,university,degree,passingYear):
        self.university=university
        self.degree=degree
        self.passingYear=passingYear
    def qoutput(self):
        print("Passed out fom University:",self.university,"\nDegree:",self.degree,"\Passout year: ",self.passingYear)
class Scientist(Employee,Qualification):
    def __int__(self,ename,salary,dateOfJoining,university,degree,passingYear):
        Employee.__init__(self,ename,salary,dateOfJoining)
        Qualification.__init__(self,university,degree,passingYear)
    def soutput(self):
        Employee.output()
        Qualification.output()
a=Scientist('Ayush',20000,'21-04-2010','MIT','B.Tech','31-3-2008')
a.soutput()

我无法找到问题的解决方案,也无法理解为什么会发生此 TpyeError。我是蟒蛇的新手。谢谢

【问题讨论】:

  • 错误发生在哪个类?你能给我们完整的异常跟踪吗?
  • 科学家班
  • 发布显示错误发生行的python回溯。
  • @tdelaney 在这里你可以追溯(最近一次调用最后一次):文件“C:/Python34/84.py”,第 22 行,在 a=Scientist('Ayush',20000,' 21-04-2010','MIT','B.Tech','31-3-2008') TypeError: __init__() 接受 4 个位置参数,但给出了 7 个
  • 您在__init__ 中有错字。你写了__int__。它使用父类的dunder init

标签: python multiple-inheritance


【解决方案1】:

你的科学家类的初始化函数写成:

def __int__

而不是

def __init__

所以发生的事情是它从其父类继承了 init 函数,它接收的参数少于您发送给该类的参数。

此外,您应该使用超级函数,而不是调用父级的 init。

super(PARENT_CLASS_NAME, self).__init__()

这显然适用于所有父函数。

【讨论】:

    【解决方案2】:

    您的 Scientist 类构造函数拼写为 __int__ 而不是 __init__。由于没有从 Scientist 类中使用的重写构造函数,它在继承链上上升了一个级别并使用了 Employee 的构造函数,实际上它只使用了 4 个位置参数。只需修正错字,它应该可以工作。

    (您在代码中使用类还有一些其他不好的事情,但我会允许其他人评论提示)

    【讨论】:

      猜你喜欢
      • 2019-12-07
      • 2018-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-02
      • 2017-02-18
      • 2015-07-13
      • 2017-04-22
      相关资源
      最近更新 更多