python3接口测试,python有接口的概念吗
这篇文章中要提到的课非常有趣。叫做接口类。相信朋友更容易记住这个名字。边肖想通过接口类给你带来有趣的操作。毕竟一直学函数和代码,真的是一件很累很难记的事情。希望下面小编带来的例子能让大家在运行代码的过程中找到学习接口类的快乐。
让我们看一段代码来理解为什么需要接口类。
classAlipay:
defpay(自己,钱):
打印(支付宝支付)
classApppay:
defpay(自己,钱):
印刷品(“苹果付费购买”)
classWeicht:
defpay(自己,钱):
打印(微信支付)
Defpay(支付,金钱):#支付功能,负责整体支付,与支付的对象和要支付的金额相对应。
payment .支付(钱)
p=支付宝()
支付(p,200)#支付宝支付
这段代码实现了一个有趣的功能,就是通过一个整体的支付功能,实现了不同种类的支付方式。不同之处在于付款方式是作为对象传递给函数的。
但是开发中容易出现一些问题,就是类中的函数名称不一致,会导致调用时在类中找不到对应的方法。例子如下:
classAlipay:
Defpaying(self,money):#这个类中的方法可能是由于程序员的疏忽,没有写出同样的pay,以至于后面调用pay时找不到。
打印(支付宝支付)
classApppay:
defpay(自己,钱):
印刷品(“苹果付费购买”)
classWeicht:
defpay(自己,钱):
打印(微信付费
#39;)
defpay(payment,money):#支付函数,总体负责支付,对应支付的对象和要支付的金额
payment.pay(money)
p=Alipay()#不报错
pay(p,200)#调用执行就会报错,'Alipay'objecthasnoattribute'pay'
这时候怎么办呢?可以手动抛异常:NotImplementedError来解决开发中遇到的问题
classpayment:defpay(self):
raiseNotImplementedError#手动抛异常
classAlipay:
defpaying(self,money):#这里类的方法不是一致的pay,导致后面调用的时候找不到pay
print('支付宝支付了')
defpay(payment,money):#支付函数,总体负责支付,对应支付的对象和要支付的金额
payment.pay(money)
p=Alipay()#不报错
pay(p,200)#调用的时候才会报错'Alipay'objecthasnoattribute'pay'
也可以借用abc模块来处理这种错误
fromabcimportabstractmethod,ABCMeta#接口类中定义了一些接口名:Pay,且并未实现接口的功能,子类继承接口类,并且实现接口中的功能classPayment(metaclass=ABCMeta):#抽象出的共同功能Pay
@abstractmethod
defpay(self,money):pass#这里面的pay来源于下面类中的方法pay,意思把这个方法规范为统一的标准,另外建一个规范类Payment
classAlipay(Payment):
defpaying(self,money):#这里出现paying和我们规范的pay不一样,那么在实例化Alipay的时候就会报错
print('支付宝支付了')
classWeicht(Payment):
defpay(self,money):
print('微信支付了')
defpay(pay_obj,money):
pay_obj.pay(money)
p=Alipay()#实例化的时候就会报错Can'tinstantiateabstractclassAlipaywithabstractmethodspay之前两个例子都是在执行的时候报错,这里不一样的是实例化就会知道是哪里发生错误了
总结:用abc模块装饰后,在实例化的时候就会报错,那么当我们代码很长的时候,就可以早一点预知错误,所以以后在接口类类似问题中用这个模块
接口继承实质上是要求“做出一个良好的抽象,这个抽象规定了一个兼容接口,使得外部调用者无需关心具体细节,
可一视同仁的处理实现了特定接口的所有对象”——这在程序设计上,叫做归一化。
以上就是python3接口类的一些好玩的例子,是不是觉得学python也是非常开心的事情呢~小编会不定期搜集有趣的例子分享给大家。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。