我定义了以下装饰器:
def loop_callback(func):
"""Only works in programs with a single main loop. Can call .sameThread
to access the original unwrapped function directly"""
@wraps(func)
def wrapped_func(*args, **varargs):
if mainThread==threading.current_thread():
print("We are in the loop thread")
func(*args, **varargs)
else:
print("In another thread")
loop.add_callback(lambda: func(*args, **varargs))
wrapped_func.orig=func
return wrapped_func
我们的想法是,您应该可以通过调用类似myObject.myFunction.orig(arg1, arg2)
的内容来访问原始函数。很遗憾,orig
不会收到自我对象,只有arg1
和arg2
。有没有办法解决这个问题,以便可以按我想要的方式调用它?
答案 0 :(得分:0)
你或许可以弄清楚如何将它装入像这样的装饰器中,这样你实际上最终会得到你想要的场景中所需的绑定方法,但实际上,这可能是一个很好的机会。您要了解descriptor protocol。