0

次のデコレータを定義しました。

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自己オブジェクトを受け取ることはありませarg1arg2。これを修正して、私が望むように呼び出すことができるようにする方法はありますか?

4

1 に答える 1

0

このようなデコレータに靴べらを入れる方法を理解して、話しているシナリオで必要なバインドされたメソッドを実際に作成できる可能性がありますが、実際には、これはおそらく学習する絶好のチャンスです。記述子プロトコルについて。

于 2012-12-21T01:33:39.780 に答える