在python中有如下代码:
class father():
def __init__(self,age):
self.age = age;
def get_age(self):
print(self.age);
class son(father):
def __init__(self,age):
super().__init__(age);
self.toy_number = 5;
def 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中运行的,在python3中运行将正常。
在《python编程:从入门到实践》一书中介绍了若想在python2中运行需将
super().__init__(age);
一句改为:
super(son, self).__init__(age);
但我按此方法改后,运行时报错:“TypeError: super() argument 1 must be type, not classobj”
上网查询资料后,得知若想要在python2中运行成功,可以改为如下两种方法:
方法一:
class father(object):
def __init__(self,age):
self.age = age;
def get_age(self):
print(self.age);
class son(father):
def __init__(self,age):
super(son, self).__init__(age);
self.toy_number = 5;
def 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 = age;
def get_age(self):
print(self.age);
class son(father):
def __init__(self,age):
father.__init__(self,age);#注意此处参数含self
self.toy_number = 5;
def get_toy_number(self):
print(self.toy_number);
myson = son(6)
myson.get_age()
myson.get_toy_number()
运行后都将得到正确答案:
参考链接:
---------------------
作者:jfyh5388
来源:CSDN
原文:https://blog.csdn.net/u010812071/article/details/76038833
版权声明:本文为博主原创文章,转载请附上博文链接!
阅读(2093) | 评论(0) | 转发(0) |