1. 不要求访问其他接口的源代码

  2. 不违反开放/封闭原则

  3. 定义适配器

class Adapter:
    def __init__(self,obj,obj_method):
        self.obj = obj
        self.__dict__.update(obj_method)
    
    def __str__(self):
        return str(self.obj)
  1. 使用适配器
objects = [Computer('Asus')]
tv = TV('samsung')
objects.append(Adapter(tv,dict(excute=tv.play))
human = Human('Bob')
objects.append(Adapter(human,dict(excute=human.speak)))

for i in objects:
  print(f"{str(i)} {i.execute()}")