在Python(2.7)中将类实例方法传递给另一个函数
抱歉,如果标题不太清楚,我对这个还比较陌生。这是我的代码:
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
。
2 个回答
2
你的代码里有个错误。你把 1
作为第一个参数传给了 velocity_field
,然后它又把这个值传给了 LHS
作为第二个参数(也就是 y
)。最后,你对 y
调用了 __getitem__
,也就是用 y[0]
,这就导致了异常。
另外,你还有个语法错误,因为你把结果赋值给了 return
。
3
产生这个错误 TypeError: 'int' object has no attribute '__getitem__'
的原因是:
y[0]
因为在这个时候,y
的值是 1
,也就是一个整数,而 y[0]
就像在对待一个列表或字符串一样(__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))