• 适配器Adapter


    #!/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
    

      

  • 相关阅读:
    return, break, continue
    equals 与 ==
    过滤器
    通过域名区分虚拟主机
    通过端口区分不同虚拟机
    Nginx实现反向代理
    Nginx安装
    poj2387 Til the Cows Come Home(Dijkstra)
    hdoj2544 最短路(Dijkstra || Floyd || SPFA)
    最小生成树
  • 原文地址:https://www.cnblogs.com/chenadong/p/10473865.html
Copyright © 2020-2023  润新知