第十八章:语言工具-abc:抽象基类-ABC如何工作

18.2 abc:抽象基类
抽象基类是一种接口,与单个hasattr()检查特定方法相比,抽象基类的检查更为严格。通过定义一个抽象基类,可以为一组子类建立一个公共API。有些情况下,可能需要一个对应用源代码不太熟悉的人提供插件扩展,这种情况下这个功能就特别有用,另外对于大型团队合作或者处理一个很大的代码基(同时跟踪所有类很困难,甚至不可能)也很有帮助。

18.2.1 ABC如何工作
abc的做法是,将基类的方法标记为抽象,然后注册具体类作为这个抽象基类的实现。如果应用或库需要一个特定的API,则可以用issubclass()或isinstance()根据抽象类检查对象。要使用abc模块,首先,定义一个抽象基类来表示一组插件的API,用于保存和加载数据。设置新基类的metaclass为ABCMeta,并使用修饰符为这个类建立公共API。下面的例子使用了abc_base.py。

import abc


class PluginBase(metaclass=abc.ABCMeta):

    @abc.abstractmethod
    def load(self,input):
        """Retrieve data from the input source
        and return an object.
        """

    @abc.abstractmethod
    def save(self,output,data):
        """Save the data object to the output."""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值