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就会报错。

  • 相关阅读:
    第七周作业
    第六周作业
    第五周作业
    第四周作业
    第三周作业
    第二周作业
    求最大值及下标
    查找整数
    抓老鼠
    第五周作业
  • 原文地址:https://www.cnblogs.com/wumingxiaoyao/p/8461385.html
Copyright © 2011-2022 走看看