Python总结-(抽象基类)

抽象基类(abstract base class, abc)就是类里定义了纯虚成员函数的类。纯虚函数只提供接口,并没有具体实现。抽象基类不能被实例化,通常是作为基类供子类继承,子类中重写虚函数,实现具体的接口

在C++中,派生类需要重写基类中的所有虚函数,不然是无法创建对象的,python怎样实现抽象基类呢?

class A(object):
    def get(self, key):
        pass

    def set(self, key, value):
        pass

class B(A):
    pass

b = B()
b.get('abc')

上面的代码,派生类并未重写基类方法,创建对象,调用get方法,都不会报错,针对这一点,可以在基类中抛出异常,这样一来,如果调用未重写的基类函数,那么会报错,但是对象是可以创建的,这和C++基类中的虚函数还是不一样——基类虚函数未实现,派生类就无法创建对象
在这里插入图片描述
在这里插入图片描述
既然这样报错这个方法不可行,那就调用abc模块吧

import abc

class A(metaclass=abc.ABCMeta):
    # 虚函数get
    @abc.abstractmethod
    def get(self, key):
        pass

    def set(self, key, value):
        pass

class B(A):
    def get(self, key):
        pass

b = B()

这样一来,必须重写“虚函数”get才能创建对象
在这里插入图片描述
否则的话,无法创建对象
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值