我想創建一堆對象,以非相同的方式進行交互(神經人口模擬) - 因此一個對象可能會連接到2個其他對象和一些外部變量,另一個將連接到另一個對象和它本身等等等等。python:如何創建對象之間的交互 - 參考對象似乎並不工作
我很新的面向對象的東西。我的做法是有我的課有一個列表中的所有,已與其他對象(我會想加起來在某些時候所有的連接)的連接self.connections=[]
和方法:
def addNewConnection(self,strength,source,name):
newConnection=Connection(strength,source,name) # named tuple or class
self.connections.append(newConnection)
然後在仿真的每個時間步驟i可以從所有不同來源的計算淨輸入:
netInput+=[c.source * c.weight for c in self.connections]
,但我不能找出如何在源傳遞作爲參考,而不是一個值!因爲這些值很可能隨着模擬的進展而改變。我的猜測是做一些可重複使用的類型,比如將源代碼的值設置爲1元素列表......但這不是計算上的昂貴代碼?編輯:也不起作用。
你將不得不決定何時無論如何重新計算'netInput'。沒有辦法讓'netInput'改變,因爲任何'c.source'值都會改變(即使它們是,每次改變值都會浪費時間進行重新計算:當所有的值都改變時'c.source'的值已經改變 – 2015-02-24 18:56:31
_「我無法弄清楚如何將源代碼作爲參考傳遞,而不是一個值」_。參數總是被引用傳遞,確實是'def frob(x) :x = whatever'不會修改函數外的'x'的值,但這更多的是賦值的錯誤,而不是函數調用。你在「通過一種可變類型」的想法中走在正確的軌道上。我不認爲一個元素列表比一個整數要貴得多。 – Kevin 2015-02-24 18:58:09
嘗試創建一個簡短的自包含示例,顯示您遇到問題時的行爲。也就是說,創建一個虛擬的「源代碼」和一個簡單的函數,並顯示您正在嘗試執行的操作,因爲您提到的參考/值問題而不起作用。對一個特定的例子比對一般的描述更容易。 – BrenBarn 2015-02-24 18:59:35