2015-07-19 85 views
-2

我的类定义:为什么不把这个对象属性打印成列表?

class node: 
    def __init__(self, parent, daughters, edge): 
     self.parent = parent 
     self.daughters = daughters 
     self.edge = edge 
     trie.append(self) 
     self.index = len(trie) - 1 
     trie[parent].daughters.append(self) 

当我这样做:

trie = [node(0, [], 0)] 
    currentNode = trie[0] 
    print('Current Node: ', currentNode.parent, currentNode.daughters, currentNode.edge, currentNode.index) 

它正确打印之外的所有 '女儿'。索引是一个整数,边是一个整数,父是一个整数,但'女儿'应该是一个列表。相反,它给了我一些对象语法:

Current Node: 0 [<__main__.node object at 0x100786dd8>] 0 0 

为什么它有传递列表的困难?

+2

我怀疑它正在打印一个列表,然后是列表中的节点对象的__repr__。 – NightShadeQueen

回答

1

要打印一个列表,你可以看到的方括号输出,[<__main__.node object at 0x100786dd8>],这与1个节点对象在它

您还可以通过观察该属性的类型与type(currentNode.daughters)例如确认名单通过打印类型超出

+0

正确,但它应该是一个空列表(或整数列表),而不是对象列表。我用'[]'初始化它。那么为什么里面有一个对象? – jukhamil

+0

@ user6309 ...因为你“追加”它? – jonrsharpe

+0

是的,明白了。谢谢。错过了。 – jukhamil

0

要解决这个问题,有一个meanningful文本,而不是在0x100786dd8 < 主要 .node对象>,您可以提供类与__str__功能:

class node: 
def __init__(self, parent, daughters, edge): 
    self.parent = parent 
    self.daughters = daughters 
    self.edge = edge 
    trie.append(self) 
    self.index = len(trie) - 1 
    trie[parent].daughters.append(self) 
def __str__(self): 
    return "some string !" 
+0

有意义的'__repr__'。列表在其内容上调用'repr'。 – NightShadeQueen