• 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个呢?那就可以省下不当代码了。

     
  • 相关阅读:
    eclipse安装Genymotion插件
    [Eclipse插件] 安装和使用JD-Eclipse插件
    [Eclipse插件] Eclipse中如何安装和使用GrepCode插件
    [Android Studio] Android Studio如何删除module(转载)
    前端html基本标签
    python实现简单FTP
    文件的md5计算
    suprocess模块
    几个小例子
    configparser模块
  • 原文地址:https://www.cnblogs.com/xinghun85/p/9473695.html
Copyright © 2020-2023  润新知