gpt4 book ai didi

python - 生成继承层次结构的依赖树

转载 作者:太空宇宙 更新时间:2023-11-04 11:01:06 25 4
gpt4 key购买 nike

我正在尝试编写一个递归算法来生成类继承层次结构的依赖树。下面是我的示例代码。我遇到的问题是,当 bases 列表中的元素不止一个时,只会打印列表的第一个元素及其父类。

def get_bases(klass):
bases = getattr(klass, '__bases__')
if len(bases) == 0:
return None
else:
for item in bases:
print item
return get_bases(item)

我还想生成某种显示继承层次结构的图表。请帮忙!

最佳答案

问题出在这里:

for item in bases:
print item
return get_bases(item)

您递归到项目中,然后立即返回而不继续通过 for 循环。您可以替换为:

for item in bases:
print item
get_bases(item)

或者您可以构建一个树结构而不是稍后打印(pprint_node 显示了一种可能的实现):

class Node(object):
def __init__(self, item, children):
self.item = item
self.children = children

def get_class_tree(klass):
bases = getattr(klass, '__bases__')
return Node(klass, [get_class_tree(item) for item in bases])

def pprint_node(node, level=0):
print (" "*level) + str(node.item)
for child in node.children:
pprint_node(child, level+1)

关于python - 生成继承层次结构的依赖树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5316803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com