• 接口类和抽象类


     1 # java : 面向对象编程
     2 # 设计模式   —— 接口
     3 # 接口类 : python原生不支持
     4 # 抽象类 : python原生支持的
     5 from abc import abstractmethod,ABCMeta
     6 class Payment(metaclass=ABCMeta):  # 元类 默认的元类 type
     7     @abstractmethod
     8     def pay(self,money):pass   # 没有实现这个方法
     9 # 规范 :接口类或者抽象类都可以
    10 # 接口类 支持多继承,接口类中的所有的方法都必须不能实现 —— java
    11 # 抽象类 不支持多继承,抽象类中方法可以有一些代码的实现 —— java
    12 class Wechat(Payment):
    13     def pay(self,money):
    14         print('已经用微信支付了%s元'%money)
    15 
    16 class Alipay(Payment):
    17     def pay(self,money):
    18         print('已经用支付宝支付了%s元' % money)
    19 
    20 class Applepay(Payment):
    21     def pay(self,money):
    22         print('已经用applepay支付了%s元' % money)
    23 
    24 def pay(pay_obj,money):  # 统一支付入口
    25     pay_obj.pay(money)
    26 
    27 # wechat = Wechat()
    28 # ali = Alipay()
    29 app = Applepay()
    30 # wechat.pay(100)
    31 # ali.pay(200)
    32 p = Payment()

    接口类和抽象类是一种标准化开发的思想,源自JAVA。

    目的是使一些类都有统一的方法,这样在调用方法时比较方便。

    为此,定义一个规范化的父类,父类中定义的方法,要求相关的类必须有父类的同名的方法,所以让子类继承规范化的父类,如果子类中没有同名的方法,当调用此子类中的此方法,就会调用到父类中的此方法,再父类中的此方法中主动抛出一个错误信息,这样可以提醒子类定义此方法。 父类中的此方法不需要写具体内容。

    python3中ABC模块中有

    abstractmethod,ABCMeta
    class Payment(metaclass=ABCMeta):  # 元类 默认的元类 type 元类是创造类用的类(Object是所有类的父类但不是创造其余类的)。此处将元类改为ABCMeta.
      @abstractmethod 
      def pay(self,money):pass # 使用abstractmethod这个装饰器就可以使子类在实例化时,检测子类有无父类中定义的方法,如果没有直接抛出错误信息,不需要再子类调用相关方法时抛出错误,这就是python原生支持的。



  • 相关阅读:
    kafka 0.10.2 cetos6.5 集群部署
    zookeeper3.4.9 centos6.5 集群安装
    centos6.5 scala环境变量
    用易语言写个简单的小爬虫其中的关键点
    MYSQL错误码2059解决办法
    python随机生成经纬度(用于爬虫参数伪造)
    frida框架hook获取方法输出参数(常用于简单的so输出参数获取,快速开发)
    安卓日常开发和逆向中常用的shell命令与非shell命令
    从了解机器学习开始
    numpy的使用方法
  • 原文地址:https://www.cnblogs.com/daju/p/10222720.html
Copyright © 2020-2023  润新知