Python 2.7 __init __()只需要2个参数(给定3个)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 2.7 __init __()只需要2个参数(给定3个)相关的知识,希望对你有一定的参考价值。
我有这些课程。 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)
总共有两个论点(自我,名字)。当你通过self
时,总共有3个(自我,自我,名字)。
另一答案
您可以使用
super(Student, self).__init__(name)
self已经传递给init方法,所以你不需要在__init__
方法中再次写出来。但如果你使用
super(Student, Student).__init__(self, name)
要么
super(Student, self.__class__).__init__(self, name)
你必须用__init__
方法写下自己。
以上是关于Python 2.7 __init __()只需要2个参数(给定3个)的主要内容,如果未能解决你的问题,请参考以下文章