美文网首页
Python进阶话题杂谈(十三)纯虚函数与抽象基类

Python进阶话题杂谈(十三)纯虚函数与抽象基类

作者: 樱雨楼 | 来源:发表于2018-08-03 18:53 被阅读0次

纯虚函数与抽象类都是Python面向对象中重要的编程范式,用于对继承类做强制性接口实现约定。

abc模块包含了一系列与抽象基类与纯虚函数相关的方法。Python中通过修改元类进行抽象基类的设定。这里Python2与3的语法不一致。Python2中为:

from abc import ABCMeta, abstractmethod

class Test(object):

    __metaclass__ = ABCMeta

而Python3中为:

from abc import ABC, abstractmethod

class Test(ABC):

可见Python2中通过修改__metaclass__类变量指定元类,而Python3中直接继承ABC类即可。

一个抽象基类只能被继承,而其本身无法被实例化。在抽象基类中可定义纯虚函数,又称为抽象方法。这样的方法类似于其他语言中的接口声明,只能够被继承类重写后进行调用,其本身无法被调用。且继承此抽象基类的所有类必须强制实现基类中定义的所有纯虚函数,否则代码将报错。可见,纯虚函数是对当前抽象基类的继承者所进行的一种接口约束,如果想要继承当前父类,则需要实现父类中所规定的必须实现的接口。

纯虚函数通过abstractmethod装饰器进行声明:

from abc import ABC, abstractmethod

class Test(ABC):

    @abstractmethod

    def absMethod(self):

        pass

class InsTest(Test):

    def absMethod(self):

       print('abstractmethod')

test = InsTest()

test.absMethod()

上例中,继承自Test父类的子类InsTest必须实现父类中定义的所有纯虚函数。纯虚函数的实现只要求函数名一致,参数声明可以不一致。

相关文章

  • Python进阶话题杂谈(十三)纯虚函数与抽象基类

    纯虚函数与抽象类都是Python面向对象中重要的编程范式,用于对继承类做强制性接口实现约定。 abc模块包含了一系...

  • ★01.基础概念

    抽象类:含有虚函数的类。 抽象基类:含有纯虚函数的类。 虚基类:多重继承中虚继承的基类。 类静态数据成员的定义必须...

  • C++ - 纯虚函数与抽象类

    纯虚函数:没有函数体的虚函数 抽象类:包含纯虚函数的类只能作为基类来派生新类使用不能创建抽象类的对象抽象类的指针和...

  • 纯虚函数和抽象类

    纯虚函数和抽象类 概念 纯虚函数:没有函数体的虚函数。 抽象类:包含纯虚函数的类就称为抽象类。 纯虚函数就是在函数...

  • C++抽象类(纯虚函数)

    C++抽象类 一、纯虚函数定义. 纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己...

  • 2020-02-17-C++抽象类

    抽象类包含有纯虚函数 的类 称为 抽象类,一个抽象类 至少有一个纯虚函数,抽象类只能作为基类派生出 新的子类,...

  • ★03.关于单继承

    基类总是要写虚析构函数 通过设置析构函数为纯虚函数来让类称为抽象基类 代码 函数virtual属性的传递性 拷贝移...

  • 抽象基类与纯虚函数

    因为呢,含有纯虚函数的类才叫做基类。所以我们先看看纯虚函数。 纯虚函数 1.什么是纯虚函数?首先呢,要清楚一点的就...

  • c++语法4

    接上一篇继续学习抽象类、函数模板 抽象类 c++中的抽象类是通过纯虚函数体现的,凡是含有纯虚函数的类叫做抽象类纯虚...

  • 2017 09 21

    对下列知识点进行相关学习: 主要就将纯虚函数作为基类进行程序编写练习 抽象类: 抽象类的一般形式,带有纯虚函数的类...

网友评论

      本文标题:Python进阶话题杂谈(十三)纯虚函数与抽象基类

      本文链接:https://www.haomeiwen.com/subject/muuuvftx.html