Python:回调,代表,......?什么是常见的?

oko*_*man 24 python events delegates callback

只想知道在python中对事件做出反应的常用方法是什么.在其他语言中有几种方法,如回调函数,委托,监听器结构等.有共同的方法吗?有哪些默认语言概念或附加模块,您可以推荐哪些?

ori*_*rip 18

我个人认为回调,听众和代表之间没有区别.

观察者模式(又名监听器,又名"多个回调"),很容易实现-只要持有观察名单,并添加或删除它可调用.这些可调用对象可以是函数,绑定方法或使用__call__魔术方法的类.您所要做的就是定义您期望的界面 - 例如,他们是否接收任何参数.

class Foo(object):
  def __init__(self):
    self._bar_observers = []

  def add_bar_observer(self, observer):
    self._bar_observers.append(observer)

  def notify_bar(self, param):
    for observer in self._bar_observers:
      observer(param)

def observer(param):
  print "observer(%s)" % param

class Baz(object):
  def observer(self, param):
    print "Baz.observer(%s)" % param

class CallableClass(object):
  def __call__(self, param):
    print "CallableClass.__call__(%s)" % param

baz = Baz()

foo = Foo()

foo.add_bar_observer(observer) # function
foo.add_bar_observer(baz.observer) # bound method
foo.add_bar_observer(CallableClass()) # callable instance

foo.notify_bar(3)
Run Code Online (Sandbox Code Playgroud)


Dav*_*cke 0

就我个人而言,我只见过使用回调。然而,我还没有看到那么多事件驱动的 python 代码,所以 YMMV。