zoukankan      html  css  js  c++  java
  • Python为什么要用抽象类(abc模块)?

    原文: https://www.cnblogs.com/Black-rainbow/p/9582826.html

    1、抽象类概念

      抽象类是一个特殊的类,只能被继承,不能实例化

    2、为什么要有抽象类

      其实在未接触抽象类概念时,我们可以构造香蕉、苹果、梨之类的类,然后让它们继承水果这个基类,水果的基类包含一个eat函数。

      但是你有没有想过,我们可以将香蕉、苹果、梨实例化,去吃香蕉、苹果、梨。但是我们却不能将水果实例化,因为我们无法吃到叫水果的这个东西。

      所以抽象类中只能有抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。

    3、抽象类的作用

      在不同的模块中通过抽象基类来调用,可以用最精简的方式展示出代码之间的逻辑关系,让模块之间的依赖清晰简单。

      抽象类的编程,让每个人可以关注当前抽象类的方法和描述,而不需要考虑过多的实现细节,这对协同开发有很大意义,也让代码可读性更高。

    4、抽象类的使用

    import abc  # 利用abc模块实现抽象类
    
    class File(metaclass=abc.ABCMeta):  # abc.ABCMeta是实现抽象类的一个基础类
        @abc.abstractmethod  # 定义抽象方法,无需实现功能
        def read(self):
            pass
    
    class Txt(File):  # 子类继承抽象类,但是必须定义read方法将抽象类中的read方法覆盖
        def read(self):
            print('文本数据的读取方法')
    
    txt1 = Txt()
    txt1.read()
    txt2 = File()
    txt2.read()
    

    运行结果如下:

    result

    显然将抽象类实例化报错了,得到了我们想要的结果.

    5、abc模块在Python2&3的兼容问题

    为解决兼容性问题,我们需要引入six模块

    abc



    MARSGGBO原创


    如有意合作,欢迎私戳

    邮箱:marsggbo@foxmail.com


    2019-12-30 13:52:21



  • 相关阅读:
    Java RMI简单例子HelloWorld
    Java RMI远程方法调用
    javascript中通过replace函数搜索和替换指定字符串
    详解公钥、私钥、数字证书的概念
    标准MD5加密算法
    基于Spring Boot构建的Spring MVC快速入门
    http://jinnianshilongnian.iteye.com/blog/1996071
    双11也不要乱买书
    Mybatis 中的转义字符(转帖)
    【Maven】为什么Maven dependencies有的jar包显示为灰色?
  • 原文地址:https://www.cnblogs.com/marsggbo/p/12119370.html
Copyright © 2011-2022 走看看