python优雅实现适配器
2016-12-10 21:56
417 查看
读了<精通Python设计模式>,根据其中的适配器模式,我给出了一个更为优雅的实现。
#-*- coding: utf-8 -*- # adapter pattern class Adapter(object): '''Adapter class for adapter pattern adaptee: adapted object adaptedMethods: dict{known method: adapted method}''' def __init__(self, adaptee, adaptedMethods={}): self.adaptee = adaptee self.adaptedMethods = adaptedMethods @staticmethod def adapt(adaptee, **adaptedMethods): return Adapter(adaptee, adaptedMethods) def __getattr__(self, method): # method calls am of adaptee am = self.adaptedMethods[method] return getattr(self.adaptee, am) def __getitem__(self, method): # which method is adapted by 'method' return self.adaptedMethods[method] def lookup(self, method): # which method of adapter adapts 'method' for k, v in self.adaptedMethods.items(): if v == method: return k class Adaptee: def __init__(self, v=1): self.v=1 def get(self): return self.v if __name__ == '__main__': adaptee = Adaptee(1) adapter = Adapter(adaptee, {'exec':'get'}) print(adapter.exec()) adapter = Adapter.adapt(adaptee, exec='get') print(adapter.exec()) print(adapter.lookup('get'))
相关文章推荐
- python优雅实现策略模式
- python 优雅地实现插件架构
- 【Python笔记】Python多线程进程如何正确响应Ctrl-C以实现优雅退出
- 如何优雅地实现Python通用多线程/进程并行模块
- 使用Python以优雅的方式实现根据shp数据对栅格影像进行切割
- Python实现在线上环境优雅的修改配置文件
- STL 适配器实现
- 发布一个用Python实现的“法语动词变位工具”
- Python源码剖析[15] —— 最简单的Python实现:Small Python
- python中实现Single模式
- ·python·用生成器和迭代器实现自己的xrange
- 用Python实现数据库编程
- python实现文件传输
- Python使用Com组件及Access查询分析类实现
- [Python]Python中实现一个时间(日期)型加几个月的运算
- python实现的“打砖块”游戏 Brick & Ball in Python
- 用python实现面向对像的ASP程序.
- 用Python实现GB与BIG5码的转换
- 支持Python系列:Matlab的Python实现Scipy和Matplotlib简介
- Python实现ASP+ACCESS注入,不用SOCKET