我在类和对象的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