代码之家  ›  专栏  ›  技术社区  ›  Tommy

python:有没有一个非装饰器版本的wrappe或partial可以保留mypy?

  •  0
  • Tommy  · 技术社区  · 2 年前

    假设我有:

    def foo(arg: int, arg2: str, arg3: int) -> MyReturnType:
    

    这个变体保留了mypy类型,因为mypy知道 safefoo :

    safefoo = functools.partial(foo, arg2="whatever")
    

    然而,这并没有:

    def safefoo(*args, **kwargs):
        # maybe i wanna do other stuff here
        return foo(*args, arg2="whatever", **kwargs)
    

    这也不是:

     from functools import wraps
    
     @wraps(foo)
     def safefoo(*args, **kwargs):
        return foo(*args, arg2="whatever", **kwargs)
    

    在这两种情况下,mypy仍然抱怨 safefoo 是非类型化的,并在类型化上下文中调用: Call to untyped function "safefoo" in typed context

    我该如何包装才能让mypy开心?(不重新定义类型)

    0 回复  |  直到 2 年前