簡體   English   中英

將類實例方法傳遞給Python中的另一個函數(2.7)

[英]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__yy[0]而引發異常。

此外,在將結果分配給return存在語法錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM