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
已更正。
答案 0 :(得分:3)
生成TypeError: 'int' object has no attribute '__getitem__'
的原因是:
y[0]
这是因为此时y
的值为1
,为整数,而y[0]
的行为就好像y
是一个列表或string(__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))
答案 1 :(得分:2)
您的代码中存在错误。
您将1
作为第一个参数传递给velocity_field
,后者又将其作为第二个参数(LHS
)传递给y
。最后,您通过执行__getitem__
在y
上致电y[0]
,这会引发异常。
此外,将结果分配给return
时会出现语法错误。