我写了一个模拟代码,我想为我的代码插入初始值。在
some def are here,
class multipole:
def q(self, f1,f2,f3):
t=0.
tm=0.
xp = idistribution(j,m) # initial xp values it is a list of particles velocities
while t< k:
rk(t,m,f1,f2,f3,xp) # calculate new xp value
xp.append(xxp[1])
return xp
def h(self, f1,f2,f3):
t=0.
tm=0.
xp = idistribution(j,m) # initial xp values it is a list of particles velocities
while t< k:
rk(t,m,f1,f2,f3,xp) # calculate new xp value
xp.append(xxp[1])
return xp
if __name__ == "__main__":
qp=multipole()
quxp=qp.q(0.,0.,0.)
hxp=qp.h(0.052,0.,0.)
我的问题是当我调用xp=idist(j,m)时,它将返回随机分布的离子速度,但我想对两个类方法(q和h)使用相同的分布,我该怎么做?提前谢谢。(我是python新手,我正在尝试从一些网页上学习)
使其成为类属性并计算一次:
如果它是一个简单的列表,您可以做一个浅拷贝,如果您不复制您的方法中对
xp
的任何更改都将反映在任何引用Multipole.xp
的地方。如果它包含其他对象,则需要执行copy.deepcopy向类添加一个init方法,以便每个实例都有自己的
xp
值,两个方法都将使用该值。在然后在需要xp的地方使用
xp = self.xp[:]
。在这将使每个
Multipole
实例使用不同的分发,但对给定实例上的两个方法的调用将使用相同的分发。在您可以将
xp
作为q
和h
的附加参数传入:相关问题 更多 >
编程相关推荐