博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的类继承之super
阅读量:6798 次
发布时间:2019-06-26

本文共 1186 字,大约阅读时间需要 3 分钟。

无意中看到了python类的继承中super的妙用,结合自己的实践,记录一下:

总结为一句话:如果要用super,那么父类必须继承自object类(包括初始化函数继承和类函数继承),否则会编译不通过
代码:
#!/usr/bin/python
import sys
import getopt
#import math
#coding=utf8
class AA:
        def __init__(self,a):
                print "AA class"
                self.a=a
                print "self.a:",self.a
class BB(AA):
        def __init__(self,b):
                print "BB class"
                super(BB,self).__init__(b)
                self.a=b
                print "self.a:",self.a
        def aa(self,n):
                print "n:",n
if __name__ == "__main__":
        a=AA(10)
        b=BB(11)
        print "b:",b
错误提示:
 File "aa.py", line 19, in __init__
    super(BB,self).__init__(b)
TypeError: super() argument 1 must be type, not classobj
正确代码:
#!/usr/bin/python
import sys
import getopt
#import math
#coding=utf8
class AA(object):
        def __init__(self,a):
                print "AA class"
                self.a=a
                print "self.a:",self.a
        def aa(self,m):
                print "m:",m
                for i in range(0,10):
                        print i*2;
class BB(AA):
        def __init__(self,b):
                print "BB class"
                #super(BB,self).__init__(b)
                self.a=b
                print "self.a:",self.a
        def aa(self,n):
                print "n:",n
                print "BB'aa"
                super(BB,self).aa(n)
if __name__ == "__main__":
        a=AA(10)
        b=BB(11)
        b.aa(15)
结果:
AA class
self.a: 10
BB class
self.a: 11
n: 15
BB'aa
m: 15
0
2
4
6
8
10
12
14
16
18

转载于:https://www.cnblogs.com/aiwa/archive/2012/10/10/2719094.html

你可能感兴趣的文章
assert_param
查看>>
JVM参数配置
查看>>
【leetcode】Best Time to Buy and Sell 2(too easy)
查看>>
Centos下Apache使用Symlink访问外部目录出现403
查看>>
TortoiseSVN中Branching和Merging实践
查看>>
Substring with Concatenation of All Words
查看>>
SNF快速开发平台3.0之-界面个性化配置+10种皮肤+7种菜单-Asp.net+MVC4.0+WebAPI+EasyUI+Knockout...
查看>>
耗时两月,NHibernate系列出炉
查看>>
careercup-树与图 4.3
查看>>
[转载]开源实体映射框架EmitMapper介绍
查看>>
[转]移动端开发经验
查看>>
css 选择器
查看>>
labview的IMAQ中sanp和grab有什么不同
查看>>
封装自己的printf函数
查看>>
[Angular-Scaled Web] 9. Control your promises with $q
查看>>
iOS常见异常Exec_Bad_Access问题解决办法
查看>>
Nginx、SSL双向认证、PHP、SOAP、Webservice、https
查看>>
优秀团队建设--美国式团队(ppt)
查看>>
Android中实现Launcher功能之一 ----- 添加快捷方式
查看>>
Excel向上取整
查看>>