Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3649895
  • 博文数量: 880
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 6155
  • 用 户 组: 普通用户
  • 注册时间: 2016-11-11 09:12
个人简介

To be a better coder

文章分类

全部博文(880)

文章存档

2022年(5)

2021年(60)

2020年(175)

2019年(207)

2018年(210)

2017年(142)

2016年(81)

分类: LINUX

2018-12-29 10:39:37

在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
版权声明:本文为博主原创文章,转载请附上博文链接!
阅读(2002) | 评论(0) | 转发(0) |
0

上一篇:tar -C ; rm -f

下一篇:类的继承

给主人留下些什么吧!~~