栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

装饰器的Python 3类型提示

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

装饰器的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的参数
  • 出色地支持功能装饰器

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

混乱与返回类型或参数

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/516920.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号