抽象基类

抽象基类提了一种方式,用以组织对象的层次结构,做出关于所需方法的断言,以及实现其他一些功能

要定义抽象基类,需要使用abc模块,该模块定义了一个元类(ABCMeta) 和一组装饰器(@abstractmethod 和 abstractproperty)用法如下:

 from abc import ABCMeta, abstractmethod, abstractproperty
class Foo:
__metaclass__ == ABCMeta
@abstractmethod
def spam(self, a, b):
pass
@abstractproperty
def name(self):
pass

抽象类离不开元类。在抽象类中@abstractmethod和@abstractproperty装饰去指定方法或特性必须由Foo的子类实现。

抽象类不能直接实例化。如果Bar继承自Foo,但它没有实现一个或多个抽象方法那么尝试创建Bar将失败

05-28 11:40