博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day19 Python super()
阅读量:4315 次
发布时间:2019-06-06

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

"""super()可以帮我们执行MRO中下一个父类的⽅法,通常super()有两个使用的地方:1. 可以访问父类的构造方法2. 当子类⽅法想调用父类(MRO)中的方法"""# 实例一class Foo:    def __init__(self, a, b, c):        self.a = a        self.b = b        self.c = c        class Bar(Foo):    def __init__(self, a, b, c, d):        super().__init__(a, b, c) # 调用父类的构造方法        self.d = d        b = Bar(1, 2, 3, 4)print(b.__dict__)"""结果:{'a': 1, 'b': 2, 'c': 3, 'd': 4}"""# 实例二class Foo:    def func1(self):        super().func1() # 2、 此时找的是MRO顺序中下⼀个继承类的func1()⽅法,即Ku的下一个父类Bar;报错 AttributeError: 'super' object has no attribute 'func1'        print("我的⽼家. 就住在这个屯")class Bar:    def func1(self):        print("你的⽼家. 不在这个屯") # 3、 打印class Ku(Foo, Bar):    def func1(self):        super().func1() # 1、此时super找的是Foo        print("他的老家. 不知道在哪个屯")class Test(Ku):    def func2(self):        super(Ku, self).func1()k = Ku()k.func1() """4、result:你的⽼家. 不在这个屯我的⽼家. 就住在这个屯他的老家. 不知道在哪个屯"""k1 = Foo()k1.func1()  """result:# AttributeError: 'super' object has no attribute 'func1'"""test = Test()test.func2()"""result:你的⽼家. 不在这个屯我的⽼家. 就住在这个屯"""

  

转载于:https://www.cnblogs.com/fanghongbo/p/9974770.html

你可能感兴趣的文章
读大道至简第三章有感
查看>>
BeforeFieldInit的小叙
查看>>
TeamViewer的下载地址,低调低调
查看>>
005 线程ID和线程的优先级
查看>>
POJ 3067 Japan (树状数组 && 控制变量)
查看>>
python基础条件和循环
查看>>
an exciting trip
查看>>
【转】xmind8 破解激活教程
查看>>
Mysql用命令方式启动服务
查看>>
【贪心】codeforces A. Heidi and Library (easy)
查看>>
【leetcode】lower_bound
查看>>
跨站请求伪造(CSRF)
查看>>
EF Code First数据库映射规则及配置
查看>>
.Net StackFrame
查看>>
Qt 学习之路:视图选择 (QItemSelectionModel)
查看>>
QStyleFactory类参考
查看>>
linux 获取系统屏幕分辨率
查看>>
MySQL 数据库常用命令小结
查看>>
log4net使用记录
查看>>
The Django Book 2.0--中文版
查看>>