私がやろうとしているのは、ほかのモジュールのメソッドに渡されているパラメータを変換できるように、別のモジュールの周りにラッパーを書き込むことです。Python:関数のパラメータを変更するメソッド呼び出しをインターセプトする方法はありますか?
import somemodule
class Wrapper:
def __init__(self):
self.transforms = {}
self.transforms["t"] = "test"
# This next function is the one I want to exist
# Please understand the lines below will not compile and are not real code
def __intercept__(self, item, *args, **kwargs):
if "t" in args:
args[args.index("t")] = self.transforms["t"]
return somemodule.item(*args, **kwargs)
目標は、ラッパークラスのユーザーは、モジュール内のすべての機能を書き換えることなく、基礎となるモジュールに単純化された呼び出しを行うことができるようにすることです:それはので、ここでの例で、かなり混乱しました。 somemodule
がprint_uppercase
と呼ばれる機能を持っていたのであれば、この場合には、ユーザが
w = Wrapper()
w.print_uppercase("t")
を行うと、私は答えは__getattr__
であると考えているが、私はどのように完全にはよく分からない出力
TEST
を得ることができますこのアプリケーションに使用してください。
@ D.Peterは、これがどのように適用されるかの例をまとめることができますか?私はあなたを信じています、私はちょうど嘲笑の文書とちょっと混乱しています。 –