我想传递一些类似于成员函数指针的东西。我尝试了以下方法。
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
发布于 2012-04-17 04:50:16
dummy.func1
是unbound,因此只接受一个显式的self
参数:
def greet(f,name):
d = dummy()
f(d, name)
greet(dummy.func1,'Bala')
发布于 2015-12-01 02:23:46
因为dummy
是类名,所以dummy.func1
是未绑定的。
正如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')
发布于 2012-04-17 04:52:47
您可以使用类似以下内容:
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
https://stackoverflow.com/questions/10181450
复制相似问题