2017-07-14 11 views
0

我有一个内部有一个函数的类,它更新了实例变量。在这种情况下,班级进行动态计算。这里有一个简单的例子,它定义了x和v向量,并且有一个move()函数来在一个时间间隔dt内更新位置。如何在调用函数后直接访问类变量值,即class.function()。value_from_class

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] 

但我宁愿能够直接从移动访问X ()调用:

>>> particle.move(2).X 

但是当我这样做,我得到的错误:

AttributeError: 'NoneType' object has no attribute 'X' 
+0

你可以'返回self';这将是迈向“流畅界面”的一步。 – jonrsharpe

回答

1

which updates class variables

那些实际上是实例变量

But I would rather be able to access X directly from the move() call

我没有看到一个明确的理由,为什么你想这样做,但你可以return self而不是return None任何Python函数的默认操作。

def move(self,dt): 
    self.X=self.X+self.V*dt 
    return self 

现在您的代码应工作