@@ -70,71 +70,53 @@ class Adapter(object):
7070 Usage:
7171 dog = Dog()
7272 dog = Adapter(dog, make_noise=dog.bark)
73+ """
74+
75+ def __init__ (self , obj , ** adapted_methods ):
76+ """We set the adapted methods in the object's dict"""
77+ self .obj = obj
78+ self .__dict__ .update (adapted_methods )
79+
80+ def __getattr__ (self , attr ):
81+ """All non-adapted calls are passed to the object"""
82+ return getattr (self .obj , attr )
7383
84+ def original_dict (self ):
85+ """Print original object dict"""
86+ return self .obj .__dict__
87+
88+
89+ def main ():
90+ """
7491 >>> objects = []
7592 >>> dog = Dog()
7693 >>> print(dog.__dict__)
7794 {'name': 'Dog'}
95+
7896 >>> objects.append(Adapter(dog, make_noise=dog.bark))
97+
98+ >>> objects[0].__dict__['obj'], objects[0].__dict__['make_noise']
99+ (<...Dog object at 0x...>, <bound method Dog.bark of <...Dog object at 0x...>>)
100+
79101 >>> print(objects[0].original_dict())
80102 {'name': 'Dog'}
103+
81104 >>> cat = Cat()
82105 >>> objects.append(Adapter(cat, make_noise=cat.meow))
83106 >>> human = Human()
84107 >>> objects.append(Adapter(human, make_noise=human.speak))
85108 >>> car = Car()
86- >>> car_noise = lambda: car.make_noise(3)
87- >>> objects.append(Adapter(car, make_noise=car_noise))
109+ >>> objects.append(Adapter(car, make_noise=lambda: car.make_noise(3)))
88110
89111 >>> for obj in objects:
90- ... print(' A {} goes {}' .format(obj.name, obj.make_noise()))
112+ ... print(" A {0 } goes {1}" .format(obj.name, obj.make_noise()))
91113 A Dog goes woof!
92114 A Cat goes meow!
93115 A Human goes 'hello'
94116 A Car goes vroom!!!
95117 """
96118
97- def __init__ (self , obj , ** adapted_methods ):
98- """We set the adapted methods in the object's dict"""
99- self .obj = obj
100- self .__dict__ .update (adapted_methods )
101-
102- def __getattr__ (self , attr ):
103- """All non-adapted calls are passed to the object"""
104- return getattr (self .obj , attr )
105-
106- def original_dict (self ):
107- """Print original object dict"""
108- return self .obj .__dict__
109-
110-
111- def main ():
112-
113- objects = []
114- dog = Dog ()
115- print (dog .__dict__ )
116- objects .append (Adapter (dog , make_noise = dog .bark ))
117- print (objects [0 ].__dict__ )
118- print (objects [0 ].original_dict ())
119- cat = Cat ()
120- objects .append (Adapter (cat , make_noise = cat .meow ))
121- human = Human ()
122- objects .append (Adapter (human , make_noise = human .speak ))
123- car = Car ()
124- objects .append (Adapter (car , make_noise = lambda : car .make_noise (3 )))
125-
126- for obj in objects :
127- print ("A {0} goes {1}" .format (obj .name , obj .make_noise ()))
128-
129119
130120if __name__ == "__main__" :
131- main ()
132-
133- ### OUTPUT ###
134- # {'name': 'Dog'}
135- # {'make_noise': <bound method Dog.bark of <__main__.Dog object at 0x7f631ba3fb00>>, 'obj': <__main__.Dog object at 0x7f631ba3fb00>} # noqa flake8
136- # {'name': 'Dog'}
137- # A Dog goes woof!
138- # A Cat goes meow!
139- # A Human goes 'hello'
140- # A Car goes vroom!!!
121+ import doctest
122+ doctest .testmod (optionflags = doctest .ELLIPSIS )
0 commit comments