我已经编写了一个模拟代码,我想为我的代码插入初始值。
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) 时,它将返回随机分布的 ionic 速度,但我想对两个类方法(q 和 h)使用相同的分布,我该怎么做?提前致谢。 (我是Python新手,我正在尝试从一些网页学习它)
最佳答案
将其设为类属性并计算一次:
class Multipole:
xp = idistribution(j,m)
def q(self, f1,f2,f3):
t=0.
tm=0.
xp = Multipole.xp[:]
如果它是一个平面列表,您可以进行浅复制,如果您不复制方法中对 xp
的任何更改,则将反射(reflect)在引用 Multipole 的任何地方。 xp
.如果它包含其他对象,您将需要执行 copy.deepcopy
关于python - 类的初始值,python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28676534/