我有一個網絡(對象)和節點(對象)類,每個節點屬於不同的網絡(也有鏈接對象,連接節點等,但讓我們忽略這一點)。跟蹤哪個對象在哪個網絡中的最佳方式是什麼?反之亦然?引用類或其他對象的其他實例的最佳方法?
我現在在做的是在網絡(對象)中有一個字典屬性,其中的鍵是節點對象的名稱,值是對象本身,並且還在每個節點類中都有一個networkidx屬性,以及networkidx作爲關鍵字的全局網絡字典,以及Network對象作爲值。
這是一個最小的例子。網絡具有內部時鐘,當節點被激活時,它檢索網絡的時間並將其作爲時間戳存儲在節點上。
class Network(object):
def __init__(self, networkidx):
self.networkidx = networkidx
self.nodes = {}
self.internalclock = 1
def create_node(self, nodeidx):
self.nodes[nodeidx] = Node(self.networkidx, nodeidx)
def pass_time(self, time):
self.internalclock = self.internalclock + time
class Node(object):
def __init__(self, networkidx, nodeidx):
self.networkidx = networkidx
self.nodeidx = nodeidx
self.activation_timestamps = []
def activate(self):
current_time = networks[self.networkidx].internalclock
self.activation_timestamps.append(current_time)
networks = {}
networks['net1'] = Network('net1')
networks['net1'].create_node('node1')
networks['net1'].nodes['node1'].activate()
networks['net1'].pass_time(10)
networks['net1'].nodes['node1'].activate()
print networks['net1'].nodes['node1'].activation_timestamps
一切都運行得很好,我有節點和網絡等之間更多的方法和引用我想知道這是否是跟蹤對象關係的最好方法,什麼是最好的做法等等。