如何导入Python存根文件中定义的类型?

问题描述 投票:0回答:1

假设第三方库正在使用.pyi存根文件实现类型提示:

# lib/__init__.py
def foo():
    return {"a": "bar", "b": 123, "c": 0.987}
# lib/__init__.pyi
from typing import TypedDict

class FooDict(TypedDict):
    a: str
    b: int
    c: float

def foo() -> FooDict: ...

mypy可以使用它来防止滥用:

# script.py
import lib
res = lib.foo()
print(res["d"])
# script.py:3: error: TypedDict "FooDict" has no key 'd'

现在,假设我想将lib.foo()的结果传递给另一个函数,并且我想用类型提示来注释该函数。我应该怎么做?

import lib

def my_func(val: ???):
    print(val["a"])

my_func(lib.foo())

是否有方法可以检索存根文件中定义的FooDict和其他自定义类型?

python type-hinting mypy python-typing
1个回答
0
投票

如果在MYPYPATH环境变量的路径中包含库的存根,则Mypy将在使用库时引用它。

但是,从the mouth of Guido van Rossum himself,最好的解决方案是获得模块开发人员的许可,以将存根文件包含在typeshed中,以便Mypy可以自己知道它们。

© www.soinside.com 2019 - 2024. All rights reserved.