如何在python中将成员函数作为参数传递?

2024-04-24 23:55:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想传递类似于成员函数指针的内容。我试了一下。

class dummy:
    def func1(self,name):
        print 'hello %s' % name
    def func2(self,name):
        print 'hi %s' % name

def greet(f,name):
    d = getSomeDummy()
    d.f(name)

greet(dummy.func1,'Bala')

预期输出是hello Bala


Tags: nameself内容hellodef成员hiclass
3条回答

dummy.func1unbound,因此只需要一个显式的self参数:

def greet(f,name):
    d = dummy()
    f(d, name)

greet(dummy.func1,'Bala')

因为dummy是类名,所以dummy.fun1是未绑定的。

正如phihag所说,使用dummy的实例绑定方法:

def greet(f,name):
    d = dummy()
    f(d, name)

greet(dummy.func1, 'Bala')

或者,可以在greet之外实例化dummy

def greet(f,name):
    f(name)

my_dummy = dummy()

greet(my_dummy.func, 'Bala')

您还可以使用functools.partial

from functools import partial

def greet(f,name):
    f(name)

my_dummy = dummy()

greet(partial(dummy.func1, my_dummy), 'Bala')

你可以用这样的东西:

class dummy:
  def func1(self,name):
      print 'hello %s' % name
  def func2(self,name):
      print 'hi %s' % name
def greet(name):
  d = dummy()
  d.func1(name)
greet('Bala')

这样做很好:on codepad

相关问题 更多 >