Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:\uuuu init\uuuuuu()接受3个位置参数,但给出了4个_Python - Fatal编程技术网

Python TypeError:\uuuu init\uuuuuu()接受3个位置参数,但给出了4个

Python TypeError:\uuuu init\uuuuuu()接受3个位置参数,但给出了4个,python,Python,以下是我的课程代码: class Employee: def __init__(self, name, gender): self.name = name self.gender = gender class Salary: def jump(self, name, salary): print(self.name, self.salary) class Male(Salary, Employee): def __in

以下是我的课程代码:

class Employee:
    def __init__(self, name, gender):
        self.name = name
        self.gender = gender

class Salary:
    def jump(self, name, salary):
        print(self.name, self.salary)


class Male(Salary, Employee):
    def __init__(self, name, gender, occupation):
        super(Male, self).__init__(name, gender, occupation)
        self.occupation = occupation

# Separate from all classes (list of instantiated objects)
employee1 = Male("Jim", "male", "technician")
print(Male.name)
当我在创建所有类后使用代码的最后两行时,引用super(Male,self)时会出现一个“TypeError:init()接受3个位置参数,但给出了4个位置参数”错误。。。。雇员1=男性(…行。

在宠物下,您有:

def __init__(self, name, color):
    self.name = name
    self.color = color
def __init__(self, name, color, owner):
    super(Dog, self).__init__(name, color, owner)
在“狗”下,您有:

def __init__(self, name, color):
    self.name = name
    self.color = color
def __init__(self, name, color, owner):
    super(Dog, self).__init__(name, color, owner)
在Dog下面有一个额外的owner位置参数,这导致了这个错误。另外,我认为
super()。\uuuu init\uuuu(名称,颜色)
在Python 3中也同样有效

class Employee:
   def __init__(self, name, gender):
        self.name = name
        self.gender = gender

class Salary:
  def __init__(self, name, gender):
    self.name = name
    self.gender = gender   
  def jump(self):
    print(self.name, self.salary)

class Male(Salary, Employee):
    def __init__(self, name, gender, occupation):
      self.occupation = occupation
      Employee.__init__(self, name, gender)
      Salary.__init__(self, name, gender)

employee1 = Male("Jim", "male", "technician")
print(employee1.name)

要访问基类
Employee
,在派生类
Male
中使用
super()
函数。 示例中显示了使用
super
函数的语法。 同时,使用
print(employee1.name)
代替
print(Male.name)


“您正在super中写入职业参数,但是super调用父类,而您的父类没有职业参数。职业只属于类Male。”

super(Dog,self)。\uuuuu init\uuuuuu(name,color,owner)
有一个太多的argumentsExtra,
k=Klass()
k.method()
与Klass.方法(k)完全相同。您使用的继承错误;
Male
不是一种
Salary
。您也使用的
super
错误;您必须知道哪些类出现在
Male
的方法解析顺序中,这样您就不会传递任何预期之外的参数。有关使用
super的更多信息,请参阅正确。请添加一些文本以澄清您的答案。这仍然会失败,因为
super()。\uuuuu init\uuuuu
将尝试调用
Salary.\uuuuuu init\uuuuu
首先。修改答案以处理
Salary.\uuuuuu init\uuuu