zoukankan      html  css  js  c++  java
  • python 接口类和抽象类

    接口类

    首先要知道的就是,不管是接口类还是抽象类,都是一种设计模式,是面对对象开发规范

    而这种设计模式是java提出来的,java还有很多类似的东西被其它编程语言沿用

    接口类是java为了实现多继承,设计的一个概念

    python原生并没有接口类这一概念,但是为了实现接口隔离原则,而划分出来的

    接口隔离原则:

    使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些不需要的接口

    因为python天生能实现多继承,所以并没有接口类

    应该算符合原则,强行区分出来这么一类吧

    from abc import abstractmethod,ABCMeta   #这里是为了实现接口类调用的模块
    class Payment(metaclass=ABCMeta):   #在这里声明metaclass=ABCMeta
        @abstractmethod                  #然后这里一个语法糖调用abstractmethod,就声明这个类是接口类
        def pay(self,money):pass

    一但声明一个接口类,接口类中的所有方法都必须不能实现

    抽象类

    抽象类也是面对对象开发规范

    一般情况下单继承能实现的功能都是一样的

    多继承的情况忧郁功能比较复杂,所以不容易抽象出相同的功能能的具体实现写在父类中

    python中支持抽象类:一般情况下 单继承

              且可以实现python代码

    抽象类和接口类都不能实例化

    import abc #利用abc模块实现抽象类
    class All_file(metaclass=abc.ABCMeta):
        all_type='file'
        @abc.abstractmethod #定义抽象方法,无需实现功能
        def read(self):
            '子类必须定义读功能'
            with open('filaname') as f:
                pass
    class Txt(All_file): #子类继承抽象类,但是必须定义read和write方法
        def read(self):
            print('文本数据的读取方法')
    wenbenwenjian=Txt()
    print(wenbenwenjian.read())

    文本数据的读取方法

  • 相关阅读:
    commonjs promise/A 规范
    Java之抽象类
    Java中多态的用法
    Java之方法的重写
    Java中static的用法
    java中this的用法
    Java概述
    二叉排序树的创建、插入、删除
    常用排序算法
    LeetCode小白菜笔记[2]:Reverse Integer
  • 原文地址:https://www.cnblogs.com/GrandDarkness/p/8318511.html
Copyright © 2011-2022 走看看