python多重继承的属性和方法调用顺序问题和对迭代器的初步理解
2024-10-08 22:25:08
推荐阅读:https://www.cnblogs.com/bigb/p/11650707.html
计算机学习的一个好办法就是自己将代码跑一遍,了解代码的运作顺序和原理(主要弄懂 函数作用,传入参数,返回值)
见代码:
class A(object):
def __init__(self):
print('A')
super(A, self).__init__()
class B(object):
def __init__(self):
print('B')
super(B, self).__init__()
class C(A):
def __init__(self):
print('C')
super(C, self).__init__()
class D(A):
def __init__(self):
print('D')
super(D, self).__init__()
class E(B, C):
def __init__(self):
print('E')
super(E, self).__init__()
class F(C, B, D):
def __init__(self):
print('F')
super(F, self).__init__()
class G(D, B):
def __init__(self):
print('G')
super(G, self).__init__()
if __name__ == '__main__':
f = F()
F
C
B
D
A
重点关注class F,在实现这个类的时候,采用了堆栈的原理。
先执行了print(“F”),随后按照C,B,D的顺序执行完一个就压入栈。所以此时的输出顺序为C,B,D,这时候再按照D,B,A的顺序(出栈)执行supre函数所继承的父类中的函数和方法。
注:说起来比较抽象,函数还是要自己跑一遍。推荐单步执行的方式明白每一行代码和每一个函数都是都是怎么工作的。(作用,参数,返回值的角度)
补充:
supre函数的常用格式 supre(当前类名,self).父类中的方法或属性
迭代器:
推荐阅读:https://www.cnblogs.com/Yanjy-OnlyOne/p/10147052.html
推荐代码:
def odd():
print('step 1')
yield 1
print('step 2')
yield(3)
print('step 3')
yield(5) #yield会返回一个迭代器,不过值会储存在迭代器内,通过迭代可以取出来,而且for循环的实质是由上次断掉的地方重新继续运行
o=odd() #调用函数只是会返回一个生成器 (推荐此行加断点)
for i in o: #for循环本质是不断调用next方法,而只是在调用的时候才会去执行函数,随用随取。(将本段代码设置断点跑一跑就知道了)
print(type(i))#迭代器只是一个容器,用来储存值的
print(i)
注:推荐自己跑一遍代码
迭代器也可以理解为一种对子函数的“冻结”,保存当前子函数中的所有值。下一次调用时由yield之后接着运行
最新文章
- webservice入门(1)
- CI框架源码阅读笔记8 控制器Controller.php
- Velocity(8)——引入指令和#Stop指令
- iOS9横竖屏设置的处理方法
- [转]iOS hacking resource collection
- Android view的测量及绘制
- vi 编辑器笔记
- sublime安装、注册、插件
- Swift基础之Demo包含刷新,加载,网络请求,MVC
- ASP.NET Aries 高级开发教程:Excel导入之代码编写(番外篇)
- JAVA JVM常见内存参数配置简析
- python模块:xlsxwriter和xlrd相结合读取、写入excel文件
- 在DevExpress程序中使用PopupContainerEdit和PopupContainer实现数据展示
- Docker基本使用(二)
- 剑指offer(57)二叉树的下一个节点
- Spark机器学习(12):神经网络算法
- gulp学习总结
- BZOJ1009 GT考试
- Zookeeper笔记之四字命令
- 源码安装svn 1.8.9
热门文章
- 吴裕雄--天生自然 R语言开发学习:基本图形(续一)
- Windows server 2008 r2下安装sqlserver2012
- linux Init分析(原创)
- Java运行 Unsupported major.minor version 51.0 错误
- Android 开发技术周报 Issue#270
- phpstudy渗透到服务器
- springboot 解决实体类值为null或者数组为空,不返回前台
- CKEditor4.7怎样实现上传图片,浏览服务器(无需ckfinder),nodejs图片管理,字体居中,图片居中(超详细)
- 简单谈谈HashMap
- angular -——组件样式修改不成功