Python 2.7 __init__() 恰好接受 2 个参数(给定 3 个)

标签 python inheritance super

我有这些类(class)。 Person 是父类,Student 是子类:

class Person(object):
    def __init__(self, name):
        self.name = name

class Student(Person):
    def __init__(self, avr, name):
        self.avr = avr
        super(Student, self).__init__(self, name)

当我尝试创建 Student 的实例时出现此错误:

__init__() takes exactly 2 arguments (3 given)

我的代码有什么问题?

最佳答案

如果您使用的是 super,则不会将 self 传递给目标方法。它是隐式传递的。

super(Student, self).__init__(name)

总共有 2 个参数 (self, name)。当您传递 self 时,总共有 3 个(self、self、name)。

关于Python 2.7 __init__() 恰好接受 2 个参数(给定 3 个),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437426/

相关文章:

python - 在 Python 中使用尽可能少的行获取第一个元素之前是否可以检查列表是否为空?

python - Pandas读取数据表前面有字符的CSV文件

ios - 访问父数组不返回任何对象

java - 递归调用super上的函数

python - 在 Python 中覆盖父类(super class)时跳过参数

python - TensorFlow,批量索引(第一维)和排序

Python 循环 vs 理解列表 vs 映射的副作用(即不使用返回值)

python - 如何将所有参数从 __init__ 传递给父类(super class)

java - 检查 Class 对象是否是 Java 中另一个 Class 对象的子类型?

python - 为什么子进程的init方法中使用Python super?