Python-继承模式学习笔记

Python继承模式

1. 首先讲一下传统的 深度优先 与 广度优先

深度优先 从下到上 从左到右 (下上左右)
广度优先 从左到右 从下到上 (左右下上)

1.1 Python2继承采用深度优先:

在这里插入图片描述

1.2 Python3继承采用广度优先(简单理解,后面给例子剖析并不是简单的广度):

在这里插入图片描述

1.3 举个例子

上述图树说明了继承关系,并用数字表示继承优先级。

以上述图示的模型简单举例:

# -*- coding:utf-8 -*-
class A():
    name = 'a'

class B(A):
    xname = 'b'

class C(A):
    name = 'c'

class D(B,C):
    xname = 'd'

d =D()
print(d.name)


# 结果
"""
Python2: a
Python3: c
"""

2. Python3继承简答广度优先理解错误纠正

复杂一点的例子你会发现它的继承不是简单的广度优先,而是基于深度优先的广度优先:

2.1 Python2继承采用深度优先:

在这里插入图片描述

2.2 Python3继承实际是采用基于深度的广度优先:

在这里插入图片描述

2.3 举个例子

# -*- coding:utf-8 -*-

class A():
    name = 'a'

class B(A):
    name = 'b'

class C(A):
    name = 'c'

class D(A):
    name = 'd'

class E(B):
    xname = 'e'

class F(C):
    name = 'f'

class G(D):
    name = 'g'

class H(E,F,G):
    xname = 'h'

h = H()
print(h.name)

# 结果
"""
Python2: b
Python3: b 如果是普通的广度优先 结果应该是 f 
		   流程应该是 H->E->F->G->B->C->D->A 
		   流程实际是 H->E->B->F->C->G->D->A
"""

结论

python2支持深度优先的树继承
python3支持基于深度优先的广度优先树继承

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特本特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值