Delegates: Difference between revisions

Content added Content deleted
(Put python back)
(Update Python to simplified task)
Line 82: Line 82:
<pre>
<pre>
class Delegator:
class Delegator:
def __init__(self, delegate=None):
def __init__(self):
self.delegate = delegate
self.delegate = None
def thing(self):
def operation(self):
if hasattr(self.delegate, 'thing'):
if hasattr(self.delegate, 'thing'):
return self.delegate.thing()
return self.delegate.thing()
return 42
return 'default implementation'
def other(self):
if hasattr(self.delegate, 'other'):
return self.delegate.thing()
return 5


class Delegate:
class Delegate:
def thing(self):
def thing(self):
return 37
return 'delegate implementation'


if __name__ == '__main__':
if __name__ == '__main__':
Line 101: Line 97:
# No delegate
# No delegate
a = Delegator()
a = Delegator()
assert a.thing() == 42
assert a.operation() == 'default implementation'
assert a.other() == 5


# With delegate
# With delegate
a.delegate = Delegate()
a.delegate = Delegate()
assert a.thing() == 37
assert a.operation() == 'delegate implementation'
assert a.other() == 5
</pre>
</pre>