返回信息流版本为Py3.4.4,系统为XP
学习Py广度优先和深度优先的情况时,发现一个问题:
条件:D继承B和C,B继承A,C继承A或者不继承
问题现象:若C继承A,则查询优先级为D→B→C→A
若C不继承A,则查询优先级为D→B→A→C
为啥呢?
百度搜不到准确分析,想请教论坛各位大神。。
测试代码如下:
class A(object):
# def __init__(self):
# self.n = 'A'
pass
class B(A):
# def __init__(self):
# self.n = 'B'
pass
class C(object):
def __init__(self):
self.n = 'C'
# pass
class D(B,C):
# def __init__(self):
# self.n = 'D'
pass
obj = D()
print(obj.n)
这是一条镜像帖。来源:北邮人论坛 / python / #24572同步于 2019/11/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
蠢蠢的新手提问,Py3
qiaoqiao528
2019/11/12镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
我主要是想补充你说的这个情况是python3会出现的、python2是深度优先的继承顺序
【 在 qiaoqiao528 的大作中提到: 】
: 不是py2和py3的区别,那个深度和广度我倒是看明白了。。
: