Делегаты в python

Я применил этот короткий пример, чтобы попытаться продемонстрировать простой шаблон делегирования. Мой вопрос. Похоже ли, что я правильно понял делегацию?

class Handler:
    def __init__(self, parent = None):
        self.parent = parent
    def Handle(self, event):
        handler = 'Handle_' +event
        if hasattr(self, handler):
            func = getattr(self, handler)
            func()
        elif self.parent:
            self.parent.Handle(event)

class Geo():
    def __init__(self, h):
        self.handler = h

    def Handle(self, event):
        func = getattr(self.handler, 'Handle')
        func(event)

class Steve():
    def __init__(self, h):
        self.handler = h

    def Handle(self, event):
        func = getattr(self.handler, 'Handle')
        func(event)

class Andy():
    def Handle(self, event):
        print 'Andy is handling %s' %(event)

if __name__ == '__main__':        
    a = Andy()
    s = Steve(a)
    g = Geo(s)
    g.Handle('lab on fire')

Ответы

Ответ 1

Это базовая концепция, да - передача некоторого входящего запроса другому объекту, о котором нужно позаботиться.

Ответ 2

Один совет Python: вам не нужно говорить:

func = getattr(self.handler, 'Handle')
func(event)

просто скажите:

self.handler.Handle(event)

Я не уверен, что вы делаете с классом Handler, он не используется в вашем примере.

И в Python методы с именами верхнего регистра очень необычны, обычно это результат переноса некоторого существующего API с такими именами.