您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

装饰器的Python 3类型提示

装饰器的Python 3类型提示

您不能Callable说任何其他参数。它们不是通用的。您唯一的选择是说您的装饰器采用,Callable并且Callable返回不同的值。

可以 使用typevar来确定返回类型:

RT = TypeVar('RT')  # return type

def inject_user() -> Callable[[Callable[..., RT]], Callable[..., RT]]:
    def decorator(func: Callable[..., RT]) -> Callable[..., RT]:
        def wrapper(*args, **kwargs) -> RT:
            # ...

即使这样,最终的修饰foo()函数也具有def (*Any, **Any) -> builtins.bool*您使用时的键入签名reveal_type()

当前正在讨论各种提案以Callable提高灵活性,但这些提案尚未实现。看到

对于一些例子。该列表中的最后一个是一张总括票,其中包括您的特定用例,用于更改可调用签名的装饰器:

对于任意函数,您根本无法执行此操作-甚至没有语法。这是我组成的一些语法。

python 2022/1/1 18:38:39 有241人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶