保存元组中的函数而不执行

时间:2011-09-25 17:12:17

标签: python string function tuples

我有一个像下面这样的元组:

self.tagnames = (('string', self.do_anything()),)

如果字符串与另一个字符串匹配,它应该执行特定的函数。 但是,当我初始化self.tagnames时,似乎已经执行了该函数。

如何在不启动启动功能的情况下解决我的问题?

3 个答案:

答案 0 :(得分:4)

self.tagnames = (('string', self.do_anything),)

()是函数调用。如果你想将调用推迟到以后,只需要包含没有像这样的parens的函数引用。

答案 1 :(得分:2)

self.tagnames = (('string', self.do_anything),)

使用带参数列表的parens调用函数:

len是一个函数,len(s)正在参数s上调用该函数。只需使用该功能的名称即可获得该功能。不要使用带括号的参数列表,并且不再调用该函数。

答案 2 :(得分:1)

您应该删除括号:

self.tagnames = (('string', self.do_anything),)

显然self.do_anything()立即调用该方法,而self.do_anything返回Python中称为“绑定方法”的内容,即它是一个可调用的对象,您可以只传递参数(如果有的话)和这将导致在特定实例上调用该方法。