3

有没有办法在 Python 中创建运行 WordPress (PHP) do_action()、apply_filters()、add_action() 或 add_filter() 等函数的钩子?还是有更好的 Python 方法来做到这一点?

我在这里找到了一个关于如何使用观察者模式的好例子: http ://en.wikibooks.org/wiki/Computer_Science_Design_Patterns/Observer

4

2 回答 2

3

也许Python 信号是您正在寻找的。你当然可以这样实现观察者模式。

编辑:这是某人使用信号在 Python 中实现观察者模式的示例

于 2013-10-25T03:49:14.873 回答
0

这种功能在 Python 社区中通常称为 Signals 或 Single dispatcher。

信号在现代 Python 项目/库中被广泛使用以减少耦合,但 Python 标准中没有实现(信号模块只能捕获一些 os 信号,它不是为一般用途而设计的)。因此不同的项目可能会实现自己的信号系统(例如 PyQt)或使用第三方信号/单一调度程序库(例如 Flask、Django)。如果您使用的是 Python 框架,那么该框架很可能已经有一个信号系统。

今天的人们通常使用 PyDispatcher(Django 使用)或Blinker ( Flask 使用)。它们都具有很高的代码质量和良好的文档。我个人更喜欢Blinker。

闪光灯示例:

def subscriber(sender):
    print("Got a signal sent by %r" % sender)

ready = signal('ready')
ready.connect(subscriber)

class Processor:
   def __init__(self, name):
       self.name = name
   def go(self):
       ready = signal('ready')
       ready.send(self)
       print("Processing.")
       complete = signal('complete')
       complete.send(self)
   def __repr__(self):
       return '<Processor %s>' % self.name
processor_a = Processor('a')
processor_a.go()

输出:

Got a signal sent by <Processor a>
Processing.
于 2013-10-25T06:43:04.963 回答