|
@@ -41,6 +41,24 @@ class Adapter(object):
|
|
|
Usage:
|
|
|
dog = Dog
|
|
|
dog = Adapter(dog, dict(make_noise=dog.bark))
|
|
|
+
|
|
|
+ >>> objects = []
|
|
|
+ >>> dog = Dog()
|
|
|
+ >>> objects.append(Adapter(dog, dict(make_noise=dog.bark)))
|
|
|
+ >>> cat = Cat()
|
|
|
+ >>> objects.append(Adapter(cat, dict(make_noise=cat.meow)))
|
|
|
+ >>> human = Human()
|
|
|
+ >>> objects.append(Adapter(human, dict(make_noise=human.speak)))
|
|
|
+ >>> car = Car()
|
|
|
+ >>> car_noise = lambda: car.make_noise(3)
|
|
|
+ >>> objects.append(Adapter(car, dict(make_noise=car_noise)))
|
|
|
+
|
|
|
+ >>> for obj in objects:
|
|
|
+ ... print("A", obj.name, "goes", obj.make_noise())
|
|
|
+ ('A', 'Dog', 'goes', 'woof!')
|
|
|
+ ('A', 'Cat', 'goes', 'meow!')
|
|
|
+ ('A', 'Human', 'goes', "'hello'")
|
|
|
+ ('A', 'Car', 'goes', 'vroom!!!')
|
|
|
"""
|
|
|
def __init__(self, obj, adapted_methods):
|
|
|
"""We set the adapted methods in the object's dict"""
|
|
@@ -52,21 +70,6 @@ class Adapter(object):
|
|
|
return getattr(self.obj, attr)
|
|
|
|
|
|
|
|
|
-def main():
|
|
|
- objects = []
|
|
|
- dog = Dog()
|
|
|
- objects.append(Adapter(dog, dict(make_noise=dog.bark)))
|
|
|
- cat = Cat()
|
|
|
- objects.append(Adapter(cat, dict(make_noise=cat.meow)))
|
|
|
- human = Human()
|
|
|
- objects.append(Adapter(human, dict(make_noise=human.speak)))
|
|
|
- car = Car()
|
|
|
- car_noise = lambda: car.make_noise(3)
|
|
|
- objects.append(Adapter(car, dict(make_noise=car_noise)))
|
|
|
-
|
|
|
- for obj in objects:
|
|
|
- print("A", obj.name, "goes", obj.make_noise())
|
|
|
-
|
|
|
-
|
|
|
if __name__ == "__main__":
|
|
|
- main()
|
|
|
+ import doctest
|
|
|
+ doctest.testmod()
|