1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python 函数继承调用super()初始化报错“TypeError: super() takes at least 1 argument”

python 函数继承调用super()初始化报错“TypeError: super() takes at least 1 argument”

时间:2020-03-10 07:16:15

相关推荐

python 函数继承调用super()初始化报错“TypeError: super() takes at least 1 argument”

在python中有如下代码:

class father():def __init__(self,age):self.age = agedef get_age(self):print(self.age)class son(father):def __init__(self,age):super().__init__(age)self.toy_number = 5def get_toy_number(self):print(self.toy_number)myson = son(6)myson.get_age()myson.get_toy_number()

运行时报错:“TypeError: super() takes at least 1 argument(0 given)”

原因:

上述继承方法super()的调用是python3中的方法,而运行环境是在python2中进行的,所以会存在不兼容的情况出现。

如果要在python2的环境中运行,那么需要将参考《python编程:从入门到实践》:

super().__init__(age)

改为:

super(son,self).__init__(age)

改完以后,运行时报错:

“TypeError: super() argument 1 must be type, not classobj”

上述方法行不通,需要进行以下的更改:

方法一:

class father(object): #这里添加objectdef __init__(self,age):self.age = agedef get_age(self):print(self.age)class son(father):def __init__(self,age):super(son, self).__init__(age) #这里改为super(son,self).__init__(age)self.toy_number = 5def get_toy_number(self):print(self.toy_number)myson = son(6)myson.get_age()myson.get_toy_number()

方法二:

class father():def __init__(self,age):self.age = agedef get_age(self):print(self.age)class son(father):def __init__(self,age):father.__init__(self,age) #此处的参数含selfself.toy_number = 5def get_toy_number(self):print(self.toy_number)myson = son(6)myson.get_age()myson.get_toy_number()

参考

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。