如果你有一个可以存储函数的类,在我的情况下用作回调,我想调用这个函数而不必将self作为参数,我该怎么做?例如:
class foo:
def __init__(self, fun):
self.fun = fun
def call_fun(self):
self.fun()
现在,我原本期望这种力量看起来很有趣:
def fun(foreign_self):
pass
因为我希望object.fun()成为fun(object)的快捷方式。
编辑:更新了问题以正确反映情况。
答案 0 :(得分:3)
现在,这会让人觉得有趣:
def fun(foreign_self)
不,它没有。
fun
不必接受任何内容:
class foo:
def __init__(self, fun):
self.fun = fun
def call_fun(self):
print(self.fun)
# <function fun at 0x02269588>
self.fun()
def fun():
print('in fun')
f = foo(fun)
f.fun()
# 'in fun'
f.call_fun()
# 'in fun'
print(f.call_fun)
# <bound method foo.call_fun of <__main__.foo object at 0x022239D0>>
请注意,fun
是一个函数,而call_fun
是一个实例方法。 call_fun
恰好通过保留在实例中的引用来调用fun
函数。