1
我正在製作一個python腳本來從sqlite數據庫中爲網絡路徑提取數據。 我有兩類:節點,鏈接:在python中訪問嵌套類(循環引用?)
class node:
nodeName = str()
nodeType = str()
node1 = str()
node2 = str()
active = 0
def __init__(self, nodeID):
self.nodeID = nodeID
cursor = network.execute("SELECT linkID FROM link WHERE nodeA = ? OR nodeB = ?", (nodeID, nodeID,))
row1 = cursor.fetchone()
row2 = cursor.fetchone()
if row1:
self.link1 = link(row1[0])
if row2:
self.link2 = link(row2[0])
self.nodeName, selfsnodeType, self.active = network.execute("SELECT nodeName, nodeType, active FROM node WHERE nodeID = ?", (nodeID,)).fetchall()[0]
鏈接是完全一樣的,但它試圖讓兩個節點的孩子。正如你所看到的,這會創建一個循環引用,但是看起來好像有三個層次,鏈接子節點不會獲得自己的節點子節點,節點子節點也不會獲得鏈接子節點。嘗試讀取值返回無類型:
NODE object 67 getting link children:
(19,)
(48,)
link object 19 getting node childs:
(67,)
(112,)
NODE object 67 getting link children:
None
None
- 這種行爲是設計?
- 這是一個壞主意嗎?
- 是否有可能遍歷兒童?
我最終只是將ID存儲在變量中,而不是讓它們成爲它們自己的對象,這樣我可以調用x = node(y.node1)來獲取新實例 – bVector