Проблема здесь:
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)