zoukankan      html  css  js  c++  java
  • python的接口

    写法一:

    class Payment:
        def pay(self, money):
            raise NotImplementedError
    
    
    class Alipay(Payment):
        def pay(self, money):
            print('支付宝支付{}元。'.format(money))
    
    
    class Yunpay(Payment):
        def pay(self, money):
            print('云支付{}元。'.format(money))
    
    
    class Mypay(Payment):
        def zhifu(self, money):
            print('我的支付{}元。'.format(money))
    
    
    def payx(payment, money):
        payment.pay(money)
    
    
    payx(Mypay(), 90)
    

      由于Mypay类并未实现pay方法,所以上述代码会报错: NotImplementedError

    这就起到了限制作用。

    但是这种写法如果不去调用Mypay.pay就不会报错。

    第二种写法:

    from abc import ABCMeta, abstractmethod
    
    
    class Payment(metaclass=ABCMeta):
        @abstractmethod
        def pay(self, money):
            pass
    
    
    class Alipay(Payment):
        def pay(self, money):
            print('支付宝支付{}元。'.format(money))
    
    
    class Yunpay(Payment):
        def pay(self, money):
            print('云支付{}元。'.format(money))
    
    
    class Mypay(Payment):
        def zhifu(self, money):
            print('我的支付{}元。'.format(money))
    
    
    def payx(payment, money):
        payment.pay(money)
    
    
    payx(Mypay(), 90)
    

      报错:TypeError: Can't instantiate abstract class Mypay with abstract methods pay

    同样起到了限制作用,而这种写法只要调用Mypay就会报错。

  • 相关阅读:
    R-CNN学习笔记
    Numpy和Pandas
    用python解决打标签时将xml文件的标签名打错
    爬虫Ⅱ:scrapy框架
    爬虫Ⅰ:爬虫的基础知识
    Linux学习笔记
    MySql笔记Ⅱ
    MySql笔记Ⅰ
    Qt数据库报错:“Unable to execute statement”
    Qt数据库报错“out of memory Error opening database“
  • 原文地址:https://www.cnblogs.com/wumingxiaoyao/p/8461385.html
Copyright © 2011-2022 走看看