我有一个类,里面有一个函数,可以更新实例变量。在这种情况下,类执行动态计算。这是一个简单的例子,它定义了 x 和 v 向量,并有一个 move(( 函数来更新时间间隔 dt 内的位置。
import numpy as np
class Dynamics():
def __init__(self,x0,v0):
self.X=np.array(x0)
self.V=np.array(v0)
def move(self,dt):
self.X=self.X+self.V*dt
现在我可以这样调用它,从原点开始以 1 m/s 的速度向右移动:
>>> particle=Dynamics([0,0,0],[1,0,0])
>>> particle.move(2)
>>> print particle.X
[2,0,0]
但我宁愿能够直接从 move(( 调用访问 X:
>>> particle.move(2).X
但是,当我这样做时,我收到错误:
AttributeError: 'NoneType' object has no attribute 'X'
更新类变量
这些实际上是实例变量
但我宁愿能够直接从 move(( 调用访问 X
我没有看到您要这样做的明确原因,但是您可以return self
而不是return None
的任何Python函数的默认操作。
def move(self,dt):
self.X=self.X+self.V*dt
return self
现在你的代码应该可以工作了