2015-07-19 86 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