Delegates: Difference between revisions
Content added Content deleted
(→{{header|Python}}: python colorization) |
|||
Line 297: | Line 297: | ||
=={{header|Python}}== |
=={{header|Python}}== |
||
⚫ | |||
<pre> |
|||
def __init__(self): |
|||
⚫ | |||
self.delegate = None |
|||
def operation(self): |
|||
if hasattr(self.delegate, 'thing'): |
|||
return self.delegate.thing() |
|||
⚫ | |||
return self.delegate.thing() |
|||
⚫ | |||
class Delegate: |
class Delegate: |
||
def thing(self): |
|||
return 'delegate implementation' |
|||
if __name__ == '__main__': |
if __name__ == '__main__': |
||
# No delegate |
|||
a = Delegator() |
|||
assert a.operation() == 'default implementation' |
|||
# With a delegate that does not implement "thing" |
|||
a.delegate = 'A delegate may be any object' |
|||
assert a.operation() == 'default implementation' |
|||
# With delegate that implements "thing" |
|||
a.delegate = Delegate() |
|||
assert a.operation() == 'delegate implementation'</python> |
|||
</pre> |