定义抽象基类,规范接口内部方法执行顺序

在进阶篇中,没专门提过抽象基类,在这里顺便就提一下

  抽象基类的核心特征:不能被直接实例化

  相反,抽象基类和元类一样,一般都被当做顶层基类使用,派生类必须实现抽象类中指定的方法,且方法名也必须保持一致

  抽象基类的主要用途:从一种高层次上规范编程接口

话不多说,直接上代码

 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:

  预执行
  正式执行

只有永不遏止的奋斗,才能使青春之花,即便是凋谢,也是壮丽地凋谢