对Python中列表的__str__方法感到困惑。

10 浏览
0 Comments

对Python中列表的__str__方法感到困惑。

作为一个Java背景下的开发者,我理解__str__在Python中类似于toString方法(尽管我知道Python是一门更古老的语言)。

因此,我定义了一个小的类,并添加了一个__str__方法,如下所示:

class Node:
    def __init__(self, id):
        self.id = id
        self.neighbours = []
        self.distance = 0
    def __str__(self):
        return str(self.id)

然后我创建了几个实例:

uno = Node(1)    
due = Node(2)    
tri = Node(3)    
qua = Node(4)

现在,当尝试打印这些对象之一时,预期的行为是打印其关联的值。这也是发生的。

print uno

输出

1

但是当我做以下操作时:

uno.neighbours.append([[due, 4], [tri, 5]])

然后

print uno.neighbours

我得到的输出是

[[[<__main__.Node instance at 0x00000000023A6C48>, 4], [<__main__.Node instance at 0x00000000023A6D08>, 5]]]

而我预期的是

[[2, 4], [3, 5]]

我错过了什么?我还做了哪些令人尴尬的事情? 🙂

0