什么是适配器?就至关手机的转换插头同样,让usb接口换成三脚插。在python里就是,让不一样的类拥有一样的方法能够调用。python
先看代码spa
class A(object): def __init__(self): self.s='' def aa(self,a): self.s = a print self.s
class B(object): def __init__(self): self.s=6 def bb(self,a): self.s = a+1 print self.s
class Adapt(object): def __init__(self,func): self.__dict__.update(func)
a = A() b = B() c = Adapt(dict(aa=b.bb,aaa=a.aa)) a.aa(4) c.aa(4) c.aaa(4) b.bb(4)
输出:
4 5 4 5
适配器的主要实现是self.__dict__.update(func),经过此方法来更新Adapt类的属性,参数func是以字典形式传入。c = Adapt(dict(aa=b.bb,aaa=a.aa))是将在Adapt类内新建aa属性,指向b.bb方法,aaa属性,指向a.aa方法,那么适配器Adapt就都有A类和B类的两个类的属性。通常来讲,适配器是让两个不一样类里的不一样方法具备相同的方法名称,以方便代码结构上编写得更加方便、简洁。
举个例子:
一样是上面的代码,假设我要运行a类的aa方法,b类的bb方法。b类的bb方法通过适配器后变成了c类的aa方法,因此就能够使用如下for循环来表示了。
code
func_list = [a,c] for i in func_list: i.aa(4)
这只是两个方法,有必要用for循环吗?两个确定不必,可是若是10个呢?那就能够省下不当代码了。blog