如何在Python中将方法作为parameter passing

是否有可能将方法作为parameter passing给方法?

self.method2(self.method1) def method1(self): return 'hello world' def method2(self, methodToRun): result = methodToRun.call() return result 

是的,就像你写的那样,使用方法的名字。 方法/函数是Python中的对象,就像其他任何东西一样,你可以把它们传递给variables。 事实上,你可以把一个方法(或函数)看作一个variables,它的值是实际的可调用代码对象。

仅供参考,没有call方法 – 我认为它叫做__call__ ,但是你不需要明确地调用它:

 def method1(): return 'hello world' def method2(methodToRun): result = methodToRun() return result method2(method1) 

对的,这是可能的。 只要称之为:

 class Foo(object): def method1(self): pass def method2(self, method): return method() foo = Foo() foo.method2(foo.method1) 

这里是你的例子重写,以显示一个独立的工作示例:

 class Test: def method1(self): return 'hello world' def method2(self, methodToRun): result = methodToRun() return result def method3(self): return self.method2(self.method1) test = Test() print test.method3() 

是; 函数(和方法)是Python中的第一类对象。 以下工作:

 def foo(f): print "Running parameter f()." f() def bar(): print "In bar()." foo(bar) 

输出:

 Running parameter f(). In bar(). 

使用Python解释器来回答这些问题是微不足道的,对于更多的function, IPython解释器也是这样。

方法是任何其他的对象。 所以你可以把它们传递出去,把它们存储在列表和string中,随你随便做什么。 关于它们的特殊之处在于它们是可调用对象,因此您可以调用__call__ 。 当调用带或不带参数的方法时, methodToRun()被自动调用,所以你只需要编写methodToRun()