1 adapter
class Cat:
def __init__(self):
self.name = "cat"
def mom(self):
print("mom!")
class Dog:
def __init__(self):
self.name = "dog"
def bark(self):
print("bark!")
class Adapter:
def __init__(self, o, **adapted_methods):
"""set adapted methods in self's dict"""
self.obj = o
self.__dict__.update(adapted_methods)
def __getattr__(self, item):
"""pass non-adapted methods to self.object"""
return getattr(self.obj, item)
def adapter_test():
objects = []
dog = Dog()
objects.append(Adapter(dog, make_noise=dog.bark))
cat = Cat()
objects.append(Adapter(cat, make_noise=cat.mom))
for obj in objects:
print(obj.name)
obj.make_noise()
if __name__ == '__main__':
adapter_test()
TODO: other patterns