#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/3/4 22:13
# @Author : ChenAdong
# @email : aiswell@foxmail.com class HeroAD:
def __init__(self):
self.name = "wolf" def attack(self):
print("%s 输出了成吨的AD伤害" % self.name) class HeroAP:
def __init__(self):
self.name = "neverMore" def attack(self):
print("%s输出了成吨的AP伤害" % self.name) class Adapter(object):
def __init__(self, obj, adapter_method):
self.obj = obj
self.__dict__.update(adapter_method) def __getattr__(self, attr):
return getattr(self.obj, attr) if __name__ == "__main__":
ad = HeroAD()
ap = HeroAP()
obj_lst = []
obj_lst.append(Adapter(ad, dict(attack=ad.attack)))
obj_lst.append(Adapter(ap, dict(attack=ap.attack))) for i in obj_lst:
print(getattr(i, "name")) print("======================================") for j in obj_lst:
j.attack()

  

wolf
neverMore
======================================
wolf 输出了成吨的AD伤害
neverMore输出了成吨的AP伤害 Process finished with exit code 0

  

最新文章

  1. iOS设计模式
  2. git-----------------git:如何让git识别我修改了文件夹名字和文件名字的大小写问题。
  3. Python3 多线程下载代码
  4. NASM编译器的$和$$标记
  5. Out of resources when opening file 错误解决
  6. linq 日常关键字使用
  7. lightoj 1198 最大权重匹配
  8. .NET中DLL“没有可放置在工具箱的组件”—FreeTextBox
  9. FireMonkey Style Designer
  10. 8年,属于 HTML 5 春天的到来悄悄!
  11. NPinyin 中文转换拼音代码
  12. Number Sequence (HDU 1711)
  13. ServletRequest的一些知识点
  14. 无法运行 vue-manage-system@3.1.0 dev: `webpack-dev-server --inline --progress --
  15. Python打开新世界的大门-入门篇1
  16. drawable内存管理
  17. 能用padding,margin解决的不要使用伪元素,能用背景解决的也不要用伪元素
  18. Graham's Scan法求解凸包问题
  19. nodemon:让node自动重启
  20. 历年至今TVB剧集目录(持续更新...我已看过的推荐)

热门文章

  1. 如何在mpvue下收集小程序的formId
  2. SpingBoot 属性加载
  3. 浅谈JavaScript之事件(上)
  4. Python中编码和字符串
  5. Angular2入门:TypeScript的接口
  6. MySQL系列详解三:MySQL中各类日志详解-技术流ken
  7. 隐马尔可夫模型(HMM)及Viterbi算法
  8. C#序列化与反序列化。
  9. 使用浏览器自定义协议启动本地程序(.EXE文件)
  10. vsCode 列选择、列选中、选中列、选中多列(转载)