[英]Passing a class instance method to another function in 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
已得到糾正。
產生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))
您的代碼中有錯誤。 您將1
作為第一個參數傳遞給velocity_field
,然后將其作為第二個參數( y
)傳遞給LHS
。 最后,你調用__getitem__
上y
做y[0]
而引發異常。
此外,在將結果分配給return
存在語法錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.