微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mypy 错误:模块没有属性“__path__”

如何解决mypy 错误:模块没有属性“__path__”

我正在尝试正确注释在 python 包上运行的函数中的类型。根据经验,我知道包具有 __path__ 属性。在运行时,包(带有 __init__.py文件夹)和模块(.py 文件)的类型都是 <class 'module'>,可以用 types.ModuleType 注释;但是模块没有 __path__ 属性

使用内置函数的演示:

import asyncio
import turtle

print(type(asyncio))  # <class 'module'>
print(type(turtle))  # <class 'module'>

print(asyncio.__path__) # [.../lib/python3.7/asyncio']
print(turtle.__path__)  # AttributeError: module 'turtle' has no attribute '__path__'

Package 的类型是什么以及如何对其进行注释?

示例代码

import types

def foo(x: types.ModuleType) -> str:
    return x.__path__

使用 error: Module has no attribute "__path__" 检查 mypy 时失败。我应该使用哪种类型来表示只应将包而不是模块传递给我的函数

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。