2018lzn

Python第十七天 抽象类

 1 from abc import ABCMeta, abstractmethod
 2 
 3 class A(metaclass=ABCMeta):  称 A 为抽象类
 4     @abstractmethod
 5     def test(self):pass      test 为抽象方法, 必须由继承的子类实现具体功能
 6 
 7 
 8 class B(A):
 9     pass
10 
11 B()   只要创建类  B 的 对象, 就会报错

TypeError: Can't instantiate abstract class B with abstract methods test

 

python3,以后,新式类, 多继承,方法的查找顺序,  广度优先算法

 1 class A:
 2     def test(self):
 3         print('in A')
 4 
 5 class B(A):
 6     def test(self):
 7         print('in B')
 8         super().test()
 9 
10 class C(A):
11     def test(self):
12         print('in C')
13         super().test()
14 
15 class D(B):
16     def test(self):
17         print('in D')
18         super().test()
19 
20 class E(C):
21     def test(self):
22         print('in E')
23         super().test()
24 
25 class F(D, E):
26     def test(self):
27         print('in F')
28         super().test()
29 
30 
31 F().test()
32 
33 print(F.mro())

 执行结果

in F
in D
in B
in E
in C
in A
[<class '__main__.F'>, <class '__main__.D'>, <class '__main__.B'>, <class '__main__.E'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]

 

posted on 2018-08-28 20:23  2018lzn  阅读(171)  评论(0编辑  收藏  举报

导航