【发布时间】:2010-01-15 18:54:23
【问题描述】:
给定一个继承自这个基础的类的列表:
class Plugin(object):
run_after_plugins = ()
run_before_plugins = ()
...以及以下规则:
- 插件可以提供它们必须运行的插件列表。
- 插件可以提供之前必须运行的插件列表。
- 插件列表可能包含也可能不包含在排序约束中指定的所有插件。
谁能提供一个很好的干净算法来排序插件列表?它还需要检测循环依赖项......
def order_plugins(plugins):
pass
我想出了几个版本,但没有什么特别整洁:我相信你们中的一些 Art of Computer Programming 类型会喜欢挑战 :)
[注意:问题在 Python 中给出,但显然不仅仅是一个 Python 问题:任何语言的伪代码都可以]
【问题讨论】: