abc-抽象模块

初次见到这个模块,一脸懵逼,怎么还有这种命名方式,后来才了解,原来只是简称,全称是abstract base

classes,中文名抽象基类。有点类似于java中的抽象接口的概念。我认为它的主要作用是就是我们常说的继承和多态,抽象基类中可以选择定义一组方法而不实现,由其子类去继承并实现。其子类包含两种类型,一是继承类,继承父类的方法和属性,一是虚拟子类,也叫注册类,它不会从父类继承任何方法和属性。


import abc

class AbstractFatherClass(metaclass=abc.ABCMeta):

@abc.abstractmethod

deffunc_1(self):

raiseNotImplementedError

@classmethod

@abc.abstractmethod

deffunc_2(cls):

raiseNotImplementedError

@staticmethod

@abc.abstractmethod

deffunc_3():

raiseNotImplementedError

@classmethod

deffunc_4(cls):

print("函数4")

class ChildClass(AbstractFatherClass):

deffunc_1(self):

print("函数1")

@classmethod

deffunc_2(cls):

print("函数2")

@staticmethod

deffunc_3():

print("函数3")

if __name__ =='__main__':

child_class = ChildClass()

child_class.func_1()

child_class.func_2()

child_class.func_4()

ChildClass.func_3()

你可能感兴趣的:(abc-抽象模块)