我在類和對象的python中遇到了一些麻煩。我有兩個類,並且我實例化了每個類的一個對象。我想在用戶鍵入某個字符串時將這些對象傳遞給函數。該函數然後會調用它所需的對象的類方法。 (這些方法對於每個類都有相同的名稱)。我做了一個示例文件如下:Python - 將不同類的對象傳遞給函數
class Test1(object):
def method1(self):
print("test1")
class Test2(object):
def method1(self):
print("test2")
def Call(something):
return something.method1
def Call2(something):
y = input("> ")
return something.method1
array = [Test1(), Test2()]
my_dict = {'call': Call(array[0]), 'call2': Call2(array[1])}
x = input("> ")
if x in my_dict:
my_dict[x]()
我認爲會發生的是Call2()在運行時被調用並要求輸入。然後第二個輸入()被調用。有人可以解釋爲什麼即使if語句沒有機會評估字符串,Call2()也會運行嗎?可能有很多我誤解的東西。任何幫助表示讚賞。
編輯:好的,我明白在dict的聲明期間調用函數。你如何將一個函數連接到字典,同時仍然將對象傳遞給它?
這很有道理,謝謝。我只需要一種方法來在dict中聲明它,而不用調用它。 – Ci3 2012-04-19 22:35:16
@ user1343005,如果我理解你正確,你希望將函數綁定到特定的參數而不用調用函數。一種方法是創建一個新函數,使用'lambda'就像這樣:'my_dict = {'call':lambda:Call(array [0]),'call2':lambda:Call2(array [1]) }'。請參閱[這裏](http://stackoverflow.com/a/10237755/577088)。 – senderle 2012-04-19 22:42:24