适配器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

  

原文地址:https://www.cnblogs.com/chenadong/p/10473865.html