这可能是一个艰难的.
假设我有一种类型
JSON = Union[Mapping[str, "JSON"], Sequence["JSON"], str, int, float, bool, None]
我有一个功能
def memoize[**P, T: JSON](fn: Callable[P,T]) -> Callable[P,T]:
# ...make the function memoizable
return wrapped_fn
如何约束FN的参数都是JSON的子类型?或者,如果这不能静态完成,我如何在创建包装器之前在Mememize中判断它?
我试着给ParamSpec变量 **P设置边界,但似乎还没有实现.我也试过issubclass,但这对typehints不好用.