間違った数の引数を指定して関数を呼び出したり、定義にないキーワード引数を指定して関数を呼び出したりすると、TypeError が返されます。コールバックがサポートするものに基づいて、コールバックを取得し、可変引数で呼び出すコードが必要です。それを行う1つの方法は、 callbackに対してandcb
を使用することですが、それを のようなものに抽象化したいと思いますが、それは「適合する」引数のみを適用します。cb.__code__.cb_argcount
cb.__code__.co_varnames
apply
例えば:
def foo(x,y,z):
pass
cleanvoke(foo, 1) # should call foo(1, None, None)
cleanvoke(foo, y=2) # should call foo(None, 2, None)
cleanvoke(foo, 1,2,3,4,5) # should call foo(1, 2, 3)
# etc.
すでに Python にこのようなものはありますか、それともゼロから作成する必要がありますか?