我想创建一堆对象,以非相同的方式进行交互(神经人口模拟) - 因此一个对象可能会连接到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