我有一个内部有一个函数的类,它会更新实例变量。在这种情况下,该类进行动态计算。这是一个简单的例子,它定义了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米/秒的速度向右移动原点:
>>> 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'
答案 0 :(得分:1)
更新类变量
这些实际上是实例变量
但我宁愿能够直接从move()调用
访问X.
我没有看到你想要这样做的明确原因,但你可以return self
而不是return None
的任何Python函数的默认动作。
def move(self,dt):
self.X=self.X+self.V*dt
return self
现在您的代码应该正常工作