显示类实例?

时间:2017-02-12 12:52:43

标签: python python-3.x oop pointers

以下代码用于构建链接列表。

我创建了一个名为a的Node实例,并给它一个项目'hello',并创建了一个名为b的Node实例,然后给它一个值'world',然后{{1} };

当我输入a.setOther(b)时,我没有'世界',但我得到a.getOther()

这是一个指针,给我的磁盘上的数据位置?如果是,那么如何显示此位置的数据?

<__main__.Node at 0x140ae7fafd0>

2 个答案:

答案 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