美文网首页
Python abc — 抽象类¶

Python abc — 抽象类¶

作者: 虐心笔记 | 来源:发表于2020-04-02 21:33 被阅读0次

一、概述

    抽象类是一个特殊的类,只能被继承,不能实例化。
    抽象类基于类抽象而来,主要用于被继承的子类,约束子类实现抽象方法,实现归一化设计。
    抽象类中有定义抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。
    抽象类的本质还是类,指的是一组类的相似性,包括数据属性、函数属性。介于类和接口直接的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计 。
    在不同的模块中通过抽象基类来调用,可以用最精简的方式展示出代码之间的逻辑关系,让模块之间的依赖清晰简单。抽象类的编程,让参与者可以关注当前抽象类的方法和描述,而不需要考虑过多的实现细节,这对协同开发有很大意义,便于提升代码可读性、灵活性、扩展性。 

    

 为什么需要抽象类呢?

    之前学习过类-面向对象的概念,就可以知道类是基于对象抽象的,那么抽象类是基于类抽象而来

    举例说明:

    假设有多个对象类,如狗、猫、猴子、牛、马等。那么这些对象有一些共同的特征或者行为,然后把这些相同特征、行为抽象出来,定义一个叫动物 Animal 类, 抽取出来的特征和行为定义为属性和方法。因为动物这个概念相对来说比较抽象,现实中你不可能看见一个叫动物的东西。要么看到的是一条狗,要么是猫。

    从实现的角度来看,普通类和抽象的区别就在于:抽象类只有抽象方法,没有具体实现其功能。所以说实例化该类是无意义的,因此抽象类定义是无法被实例化。只能被继承,且继承的子类必须实现该类的抽象方法。跟接口的定义有点类似。



二、抽象类的定义

    在Python中实现抽象类的定义是通过abc模块来实现。abc模块中定义了抽象类的metaclass类ABCMeta,以及抽象方法装饰器abstractmethod,、abstractclassmethod,、abstractstaticmethod、抽象property装饰器 abstractproperty 等,通过这些工具类、方法来实现抽象类的创建。

            实现方法:通过直接继承该抽象类,然后实现两个抽象方法。注意如果没有实现抽象方法的话将抛出:

注意: 如果没有实现其中抽象方法的某一个的话将抛出
    TypeError: Can't instantiate abstract class WashingMode with abstract methods XXX

    abc模块不仅提供了一个元类 ABCMeta,可以用来定义抽象类,另外还提供一个工具类 ABC,可以用它以继承的方式定义抽象基类。如果一个使用 ABCMeta 作为元类的工具类。抽象基类可以通过从 ABC 派生来简单地创建,这样的话就避免了在某些情况下会令人混淆的元类用法

相关文章

  • python基础(abc类)

    abc ABC是Abstract Base Class的缩写。Python本身不提供抽象类和接口机制,要想实现抽象...

  • 深入理解类和对象

    1.1 抽象基类(abc模块) python的抽象类的写法,继承抽象类的类必须要实现抽象方法,否则会报错 1.2 ...

  • Python abc — 抽象类¶

    一、概述 抽象类是一个特殊的类,只能被继承,不能实例化。抽象类基于类抽象而来,主要用于被继承的子类,约束子类实现...

  • Python中的抽象类和抽象方法

    抽象类的概念 抽象类是一个特殊的类,它只能被继承,不能被实例化。python中如果要使用抽象类则需要导入模块abc...

  • python抽象基类abc

    python中并没有提供抽象类与抽象方法,但是提供了内置模块abc(abstract base class)来模拟...

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

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

  • 子类父类

    抽象类,加上@abc.abstractmethod装饰器后严格控制子类必须实现这个方法

  • Python 复读笔记(1)

    Python命令行的交互模式交互模式 python abc.py 将在命令行中执行abc.py源码文件 Linux...

  • Python ABC

    Python基础语法框架笔记 变量 变量声明定义 Python的变量的声明和定义很简单,或者说已经淡化了变量声明和...

  • 16.2、python初识面向对象(2)

    抽象类 什么是抽象类 与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的...

网友评论

      本文标题:Python abc — 抽象类¶

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