以下代码用于构建链接列表。
我创建了一个名为a的Node实例,并给它一个项目'hello',并创建了一个名为b的Node实例,然后给它一个值'world'
,然后{{1} };
当我输入a.setOther(b)
时,我没有'世界',但我得到a.getOther()
。
这是一个指针,给我的磁盘上的数据位置?如果是,那么如何显示此位置的数据?
<__main__.Node at 0x140ae7fafd0>
答案 0 :(得分:0)
这不是问题,实际上,代码工作正常,您可以通过简单的相等来验证getOther
做正确的事情:
a.getOther() == b
True
问题是,当您执行a.getOther()
时,解释器将调用返回的对象的__repr__
将其打印出来。如果您需要自定义表示,则需要通过添加__repr__
:
def __repr__(self):
return "Node({0}, {1})".format(self.item, self.other)
理想情况下,__repr__
的输出应与您用于构造Node
对象的语句类似。
同样,如果您使用__str__
打印对象,并且想要为用户提供更友好的用户表示,则需要定义print
。
答案 1 :(得分:0)
我创建了一个名为a的Node实例,并给它一个项目'hello',并创建了一个名为b的Node实例,然后给它一个值'world',
a = Node('hello')
b = Node('world')
然后
a.setOther(b);
a.setOther(b)
当我输入
a.getOther()
时,我没有'world'
setOther(b)
正在存储Node b
的引用;当a.getOther()
被调用时(在您的代码中),您只需返回return self.other
,这是引用的地址;而你需要item
内的Node b
。
所以你应该返回return self.other.item
试试这个:
def getOther(self):
return self.other.item