装饰器的Python 3类型提示

装饰器的Python 3类型提示,第1张

装饰器的Python 3类型提示

您不能

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

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

RT = TypeVar('RT')  # return typedef 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
提高灵活性,但这些提案尚未实现。看到

  • 允许可变参数的仿制药
  • 建议:泛化
    Callable
    以便能够指定参数名称和种类
  • TypeVar表示Callable的参数
  • 出色地支持功能装饰器

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

混乱与返回类型或参数

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



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5508131.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存