设为首页 加入收藏

TOP

新式类 VS 经典类(二)
2017-10-05 15:02:06 】 浏览:1135
Tags:新式 经典
nit__()
18 # self.n = "C" 19 pass 20 21 22 class D(B, C): 23 24 # def __init__(self): 25 # super(D, self).__init__() 26 # self.n = "D" 27 pass 28 29 d = D() 30 print(d.n) 31 32 #输出 33 A View Code

 

3.2 经典类

1、经典类定义,什么都不继承

class Fruit:
    '经典类'
    pass

 

2、继承父类的init()等函数或属性

父类名.__init__(self, 参数1,参数2,....)

  

3、调用父类中相同属性或者方法的顺序

在 Python3 中,多继承的查询顺序都是 广度优先查询

经典类的调用顺序为: 深度优先查询

子类会沿着父类的父类这样的顺序查询,如果都没有,会返回查找另一个父类。

代码如下:

1.调用本身的属性

 1 class A:#经典类
 2     def __init__(self):
 3         self.n = "A"
 4 
 5 class B(A):
 6     pass
 7     def __init__(self):
 8         self.n = "B"
 9 
10 class C(A):
11     def __init__(self):
12         self.n = "C"
13 
14 class D(B,C):
15     def __init__(self):
16         self.n = "D"
17 
18 d = D()
19 print(d.n)
20 
21 #输出
22 D
23 
24 全部代码
View Code

 

2. 注释D中的代码,获得B

 1 class A:
 2     def __init__(self):
 3         self.n = "A"
 4 
 5 class B(A):
 6     def __init__(self):
 7         self.n = "B"
 8 
 9 class C(A):
10     def __init__(self):
11         self.n = "C"
12 
13 class D(B,C):
14     pass
15 
16 d = D()
17 print(d.n)
18 
19 #输出
20 B
View Code

 

3.注释B中的代码,获得A

 1 class A:
 2     def __init__(self):
 3         self.n = "A"
 4 
 5 class B(A):
 6     pass
 7 
 8 class C(A):
 9     def __init__(self):
10         self.n = "C"
11 
12 class D(B,C):
13     pass
14 
15 d = D()
16 print(d.n)
17 
18 #输出
19 A
View Code

 

4.注释A中的代码,获得C

 1 class A:
 2     pass
 3 
 4 class B(A):
 5     pass
 6 
 7 class C(A):
 8     def __init__(self):
 9         self.n = "C"
10 
11 class D(B,C):
12     pass
13 
14 d = D()
15 print(d.n)
16 
17 #输出
18 C
View Code

 

四、总结

1、新式类继承object类,经典类不继承任何类

2、新式类用super关键字继承构造方法,经典类用 父类.__init(self)来继承

3、新式类:广度优先查询,经典类:深度优先查询(因为新式类讲究的是新,所以要找最近的,最新的;然后经典的讲究古老,所以更远更深的)

4、值得注意的是,我们上面是在python2中做的,在python3中不管是经典类还是新式类,都是采用的是广度优先查询,已经废弃2中的深度查询了

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python网络数据采集4-POST提交与C.. 下一篇python MultiProcessing标准库使..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目