python 适配器

什么是适配器?就相当手机的转换插头一样,让usb接口换成三脚插。在python里就是,让不同的类拥有同样的方法可以调用。

先看代码

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循环来表示了。

func_list = [a,c]
for i in func_list:
    i.aa(4)

这只是两个方法,有必要用for循环吗?两个肯定没必要,但是如果10个呢?那就可以省下不当代码了。

 

猜你喜欢

转载自www.cnblogs.com/xinghun85/p/9473695.html
今日推荐