在我的頭上纏繞一點點麻煩。我相信答案很簡單,但它一直在推動着我。TypeError:B2()只需要1個參數(給出0)...爲什麼這個函數被完全調用爲named或變量
在下面的代碼:
class f1():
valnum=1
def A1(self):
self.valnum=5
print self.valnum
def B2(self):
self.valnum=10
print self.valnum
funlist=[A1,B2]
x=f1
x()
x().A1()
x().funlist[1]()
A1()
會如預期執行,但不B2()
。最終,我想讓代碼從列表中調用一個隨機函數,但TypeError: B2() takes exactly 1 argument (0 given)
一直在阻礙我。爲什麼這是最好的解決方案。
謝謝。
事實上,'funlist'包含*功能*,而不是實例方法或結合的方法。在從類對象中檢索函數之前,函數不會成爲未綁定的方法,並且在創建funlist時類對象還不存在。 – 2012-03-27 10:52:15
謝謝,這是一個有用的說明。 – 2012-03-27 11:02:37
或者,將funlist的定義移動到'__init__'中並讓它獲取實例方法併成爲一個實例屬性。 – agf 2012-03-27 11:09:30