Python - 递归调用__str __()只返回一个项

时间:2015-06-12 00:13:20

标签: python

这是我的代码(非常简单)

class Node:
    def __init__(self, data, next):
        self.data = data
        self.next = next

    def __str__(self):
        node = self
        if node.next:
            node = node.next
            return node.__str__()
        return str(self.data)

现在,当我创建两个节点时,就像这样:

a = Node(1,1)
b = Node(2,a)
print(b)

它返回

1

我的问题是,当我打印(b)时,不应该打印

2
1

?因为首先,它将检查node.next是否存在(在这种情况下,它确实存在.node.next是a)。然后它会做

    node = node.next
    return node.__str__() # a.__str__() which is equal to 1
return str(self.data) # this correctly returns 2

它怎么回来

2
1

并仅返回

1

代替?

1 个答案:

答案 0 :(得分:3)

您的代码不会连接值。它似乎只是递归到它结束,然后返回(仅)这个值。甲...

return node.__str__() + str(self.data) 

......可能更符合您的想法。