python的接口
2024-10-14 01:08:07
写法一:
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就会报错。
最新文章
- 2016年中国大学生程序设计竞赛(合肥)-重现赛1001 HDU 5961
- date时间函数
- HoloLens开发手记 - Unity development overview 使用Unity开发概述
- jquery 解析数据库中的json日期为正常的格式
- 【C++】array初始化0
- 【JAVA、C++】LeetCode 021 Merge Two Sorted Lists
- TI CC2541的中断优先级设置.
- 最大流问题Ford-Fulkerson方法(转)
- Linux-0.00运行环境搭建【转】
- C++编程对缓冲区的理解
- VBScript: Windows脚本宿主介绍
- 理解 Android 本地数据存储 API
- C#学习笔记(4)
- Asp.net MVC4.0(net4.5) 部署到window server 2003上的解决方案
- jQuery选择器的分类
- 小程序组件之picker和range-key的用法
- Uva - 400 - Unix ls
- Python二级-----------程序冲刺5
- numpy学习笔记(三)
- Maven CXF wsdl2Java String生成JAXBElement<;Xxx>; 解决方法