python规范(接口类)

接口类可以规范代码,但接口类本身是不实现的

class Payment:
def pay(self,money):
raise Notlmplemented class Wechat(Payment):
def pay(self, money):
print('已经用微信支付了%s元' % money) class Alipay(Payment):
def pay(self, money):
print('已经用支付宝支付了%s元' % money) class Applepay(Payment):
def fuqian(self, money):
print('已经用applepay支付了%s元' % money) def pay(pay_obj, money): # 统一支付入口
pay_obj.pay(money) wechat = Wechat()
ali = Alipay()
app = Applepay()
pay(ali,200)
pay(app,200)

 运行后如下

app = Applepay()
TypeError: Can't instantiate abstract class Applepay with abstract methods pay

  

以下是接口类的另一种写法

from abc import abstractmethod, ABCMeta

class Payment(metaclass=ABCMeta):  # 元类 默认的元类 type
@abstractmethod
def pay(self, money): pass # 没有实现这个方法

接口隔离原则

接口类在python中不存在,只是一种规范,python中自带多继承所以我们直接用class来实现接口类

抽象类

多态

多态指的是一类事物有多种形态

动物有多种形态:人,狗猪

import abc
class Animal(metaclass=abc.ABCMeta): #同一类事物:动物
@abc.abstractmethod
def talk(self):
pass class People(Animal): #动物的形态之一:人
def talk(self):
print('say hello') class Dog(Animal): #动物的形态之二:狗
def talk(self):
print('say wangwang') class Pig(Animal): #动物的形态之三:猪
def talk(self):
print('say aoao')

 鸭子类型

最新文章

  1. seajs的使用--主要了解模块化
  2. log4net 按时间输出日志
  3. ASP.Net上传大文件解决方案之IIS7.0下的配置
  4. nginx配置实战1----配置虚拟主机
  5. 黑马程序员_ C语言基础(一)
  6. 【读书笔记】iOS-装箱
  7. Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
  8. APP前端公共测试点
  9. 漫游Kafka设计篇之消息传输的事务定义
  10. MySQL 插入与自增主键值相等的字段 与 高并发下保证数据准确的实验
  11. 随机 I/O & 顺序 I/O
  12. 把txt文件中的json字符串写到plist文件中
  13. Linux简史
  14. wireshark 包分析命令
  15. iOS上机题(附个人见解)
  16. cocos2dx - tmx地图分层移动处理
  17. 【Python实战】模块和包导入详解(import)
  18. CSS实现经典的三栏布局
  19. ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台
  20. axios基本使用

热门文章

  1. IDEA/Eclipse简易化使用的几个技巧
  2. 【C++】基于邻接矩阵的图的深度优先遍历(DFS)和广度优先遍历(BFS)
  3. cnblogs
  4. CAS单点登录入门
  5. springBoot生成日志文件
  6. webpack(3)-管理资源
  7. Java数组之二维数组
  8. LightGBM总结
  9. Ubuntu设置su和sudo为不需要密码 (摘录自别处)
  10. 尝试启动 ADB 服务器时出错 解决方法