对不起,如果标题没有意义,我对此还比较陌生。这是我的密码:
class MeanFlow:
def __init__(self, V0=1):
self.V0 = V0
def LHS(self, t, y):
return y[0]*self.V0
def velocity_field(w,f):
z = 0 # dummy
u = f(z,w).real
v = -1*f(z,w).imag
return u, v
w0 = 1
mean = MeanFlow()
dwdz = mean.LHS
print(velocity_field(w0, dwdz))但是我得到了错误TypeError: 'int' object has no attribute '__getitem__'
我的问题是如何将这个函数(类实例的一个方法)传递给另一个函数。如果我在类之外定义函数并将它传递给另一个函数,这是可行的,但不是我想要的。谢谢!
编辑:错误return = y[0]*self.V0已经更正。
发布于 2014-04-02 10:46:50
生成TypeError: 'int' object has no attribute '__getitem__'的原因是:
y[0]这是因为此时,y的值是1,一个整数,而y[0]的作用就好像y是一个列表或字符串(__getitem__是获取列表中项的方法)。如果y是一个列表(例如y = [1]),它就会工作得很好。
如果您删除了[0],那么您就是在做生意:
class MeanFlow:
def __init__(self, V0=1):
self.V0 = V0
def LHS(self, t, y):
return y*self.V0
def velocity_field(w,f):
z = 0 # dummy
u = f(z,w).real
v = -1*f(z,w).imag
return u, v
w0 = 1
mean = MeanFlow()
dwdz = mean.LHS
print(velocity_field(w0, dwdz))发布于 2014-04-02 10:44:48
您的代码中有一个错误。您将1作为第一个参数传递给velocity_field,而后者又将其作为第二个参数传递给LHS (y)。最后,通过执行__getitem__调用y上的y[0],这会引发异常。
此外,当您将结果分配给return时,会出现语法错误。
https://stackoverflow.com/questions/22808764
复制相似问题