bal*_*lki 24 python python-2.7
我想传递类似于成员函数指针的东西.我尝试了以下内容.
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')
Run Code Online (Sandbox Code Playgroud)
预期的产出是 hello Bala
phi*_*hag 25
dummy.func1是未绑定的,因此只需要一个明确的self参数:
def greet(f,name):
d = dummy()
f(d, name)
greet(dummy.func1,'Bala')
Run Code Online (Sandbox Code Playgroud)
由于dummy是类名,因此dummy.fun1是未绑定的.
正如phihag所说,你使用dummy绑定方法的实例:
def greet(f,name):
d = dummy()
f(d, name)
greet(dummy.func1, 'Bala')
Run Code Online (Sandbox Code Playgroud)
或者,您可以dummy在以下范围之外实例化greet:
def greet(f,name):
f(name)
my_dummy = dummy()
greet(my_dummy.func, 'Bala')
Run Code Online (Sandbox Code Playgroud)
你也可以使用functools.partial:
from functools import partial
def greet(f,name):
f(name)
my_dummy = dummy()
greet(partial(dummy.func1, my_dummy), 'Bala')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17038 次 |
| 最近记录: |