我有一个类,其中有一个“依赖项”列表,指向相同基本类型的其他类。

class Foo(Base):
    dependencies = []

class Bar(Base):
    dependencies = [Foo]

class Baz(Base):
    dependencies = [Bar]

我想对这些类根据其依赖关系生成的实例进行排序。在我的示例中,我希望首先出现Foo实例,然后是Bar,然后是Baz。

最好的分类方式是什么?

最佳答案

这称为拓扑排序。

def sort_deps(objs):
    queue = [objs with no dependencies]
    while queue:
        obj = queue.pop()
        yield obj
        for obj in objs:
            if dependencies are now satisfied:
                queue.append(obj)
    if not all dependencies are satisfied:
        error
    return result

关于python - 如何根据依赖关系排序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/952302/

10-12 23:27