what668668
发表于 2020-5-13 20:05:57
666
Hello.
发表于 2020-5-15 06:09:20
哎呦,恭喜加精{:10_275:}
hrp
发表于 2020-5-15 07:59:59
这就厉害了
大风包子
发表于 2020-5-15 08:58:40
看看
Pythonnewers
发表于 2020-5-15 09:22:06
类这里小甲鱼没看懂.java也没看懂,算了算了{:10_269:}
sunrise085
发表于 2020-5-15 09:49:57
Pythonnewers 发表于 2020-5-15 09:22
类这里小甲鱼没看懂.java也没看懂,算了算了
你多大了?
可能是你太年轻了,还没有办法理解这种抽象的概念吧。
不要把类想象的有多么神秘。
你就想像着,世间万物都是按照各种规则分类的,符合同一种规则的就属于一类。
比如说,三角形,就是一类图形,这种图形是一种平面图形,有三条边,三个顶点,这些是共性,凡是有三个顶点三条边的平面图形就称之为三角形。
其实小学就开始学习归类了,比如小学会有分类题目,将一些图形分类,哪些是三角形,哪些是正方形,哪些是平行四边形。
只是那时候看到的都是很浅显的东西,都是实实在在存在的东西。如今把归类抽象化了。需要发挥有点想象力。
其实在编程中开始接触类的时候,也是哪一些简单的进行举例的,比如说,编程中经常举的例子,学生类,这个类有什么属性呢,学号、姓名、班级、性别、成绩等等
Pythonnewers
发表于 2020-5-15 10:07:09
sunrise085 发表于 2020-5-15 09:49
你多大了?
可能是你太年轻了,还没有办法理解这种抽象的概念吧。
不要把类想象的有多么神秘。
是的,我还小{:10_269:}
最主要我写的代码太少了,甚至可以直接推翻重做,分类我几乎用不到{:10_269:}
zwhe
发表于 2020-5-30 10:46:27
{:5_91:}
straightup
发表于 2020-6-3 20:22:36
楼主你好 ,我想问下class F中是 super(G,self).__init__(),那 按__mro__() 列表中G的位置之后的执行,应该是到D呀,为什么F就到E了呢
sunrise085
发表于 2020-6-3 20:32:06
straightup 发表于 2020-6-3 20:22
楼主你好 ,我想问下class F中是 super(G,self).__init__(),那 按__mro__() 列表中G的位置之后的执行 ...
仔细看看程序
super(G,self).__init__()被注释掉了呢~
执行的是super().__init__()
straightup
发表于 2020-6-3 21:52:36
sunrise085 发表于 2020-6-3 20:32
仔细看看程序
super(G,self).__init__()被注释掉了呢~
执行的是super().__init__()
啊这,太粗心了。那就没问题了{:10_282:}
zpm
发表于 2020-7-6 11:04:50
1
mozhihui
发表于 2020-7-11 15:02:22
E>>G>>D这里没看懂。。
mozhihui
发表于 2020-7-11 22:53:08
前面按顺序走好好的,最后那题参数看不懂了。。。为什么从B开始是先到C再回B呢?按照MRO跳过D往下走到B(此时为什么不执行"进入B...",F一开始执行也“进入F...”了呀....),B指向C,C指向D还能往回跑的吗?{:10_291:}
sunrise085
发表于 2020-7-11 23:42:21
mozhihui 发表于 2020-7-11 22:53
前面按顺序走好好的,最后那题参数看不懂了。。。为什么从B开始是先到C再回B呢?按照MRO跳过D往下走到B(此 ...
(此时为什么不执行"进入B...",F一开始执行也“进入F...”了呀....)
那是因为执行了 d=F() 调用了F类的__init__()
请看绿色的那一行字。
其实,它是从 __mro__() 列表中B的位置之后开始执行,正如最开始在 class F 中有 super() 时,是从 __mro__() 列表中F之后开始执行是一样的道理。
mozhihui
发表于 2020-7-12 10:24:34
sunrise085 发表于 2020-7-11 23:42
那是因为执行了 d=F() 调用了F类的__init__()
请看绿色的那一行字。
整理了一下思路:
1、d=F()执行F >>> 打印“ 进入F... ”
2、从F之后执行E >>> 打印“ 进入E... ”
3、遇到super(B,self),即从B之后执行C >>> 打印“ 进入C... ”
4、遇到super(D,self),即从D之后执行B >>> 打印“ 进入B... ”
5、遇到super(C,self),即从C之后执行A >>> 打印“ 进入A... ”
#如果把这里变成B,会进入死循环...也就是说加了参数就不符合每个类只调用一次的特性?
#所以参数不当的话就又回到重复调用和死循环的问题了?
sunrise085
发表于 2020-7-12 13:09:10
mozhihui 发表于 2020-7-12 10:24
整理了一下思路:
1、d=F()执行F >>> 打印“ 进入F... ”
2、从F之后执行E >>> 打印“...
是的。你的理解是对的。
可以尝试一下,看看结果。
hhheshenme
发表于 2020-7-21 20:54:48
本帖最后由 hhheshenme 于 2020-7-21 21:09 编辑
66
xiangya
发表于 2020-8-13 11:40:37
1
青岛吴彦祖
发表于 2020-8-17 11:42:46
学习