Python中的抽象基类与标准库中的abc模块

默认情况下,Python解析器不强制检查对抽象类的继承,即抽象类的子类可能没有实现其中的抽象方法,但是Python并不会报错。
为了避免这种情况,从Python 3.4/2.6开始,Python标准库中提供了abc模块(Abstract Base Classes),为定义Python的抽象基类提供了公共基础。
事实上,Python标准库中的numbers模块和collections模块都是abc模块的典型应用。


1. abc模块的组成

  • class ABCMeta(type) #创建抽象基类的元类,abc模块的核心
def __new__(mcls, name, bases, namespace, **kwargs)
def register(cls, MySubClass)     #为MySubClass注册一个虚拟的子类名
def _dump_registry(cls, file=None)
def __instancecheck__(cls, instance)
def __subclasscheck__(cls, subclass)
  • class ABC(metaclass=ABCMeta) #方便使用ABCMeta的辅助类,推荐使用
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

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

    抵扣说明:

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

    余额充值