EventHandler, Event, программирование на основе делегатов в Python какой-либо пример будет признателен? - PullRequest
12 голосов
/ 02 февраля 2010

По сути, я разработчик на C #, Я знаю, как это делает C #, EventHandler, делегат, даже ...

но как лучше это реализовать на Python.

Ответы [ 2 ]

18 голосов
/ 02 февраля 2010

Я думаю, вы должны использовать функцию:

def do_work_and_notify(on_done):
    // do work
    on_done()

def send_email_on_completion():
    email_send('joe@example.com', 'you are done')

do_work_and_notify(send_email_on_completion)

Функции (и даже методы) в python являются первоклассными объектами, которые можно разбрасывать, как и все остальное в языке.

2 голосов
/ 02 февраля 2010

Этот вопрос очень похож на Шаблон Python Observer: примеры, советы? , на который есть много отличных ответов. Есть даже реализация C # -подобных событий в Python.

...