定义抽象基类,规范接口内部方法执行顺序
在进阶篇中,没专门提过抽象基类,在这里顺便就提一下
抽象基类的核心特征:不能被直接实例化
相反,抽象基类和元类一样,一般都被当做顶层基类使用,派生类必须实现抽象类中指定的方法,且方法名也必须保持一致
抽象基类的主要用途:从一种高层次上规范编程接口
话不多说,直接上代码
1 import abc 2 3 4 class Template(metaclass=abc.ABCMeta): 5 @abc.abstractmethod 6 def pre(self): 7 ... 8 9 @abc.abstractmethod10 def execute(self):11 ...12 13 def func(self):14 """定义内部接口执行顺序"""15 self.pre()16 self.execute()17 18 19 class Valley(Template):20 def pre(self):21 print("预执行")22 23 def execute(self):24 print("正式执行")25 26 27 if __name__ == '__main__':28 Valley().func()
output:
预执行
正式执行
只有永不遏止的奋斗,才能使青春之花,即便是凋谢,也是壮丽地凋谢