python - 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__'
包的类型是什么以及如何注释它?
示例代码:
import types
def foo(x: types.ModuleType) -> str:
return x.__path__
使用 mypy 检查失败error: Module has no attribute "__path__"
。我应该使用哪种类型来表示只有包而不是模块应该传递给我的函数?
解决方案
推荐阅读
- r - 按顺序提取子字符串
- json - Spray-json反序列化嵌套的对象列表
- python - numpy.where 与 pandas.Series.map
- wso2 - 如何使用 WSO2 EI 调用用户名令牌安全后端服务
- arrays - 每天提取 SharePoint 数据
- ios - 价值在关闭后重新初始化
- c++ - Picam 落后 5 帧,使用 OpenCV (C++)
- wso2esb - java.lang.ClassNotFoundException:synapse-core_2.1.7.wso2v7 找不到 xyzBasicAuthHandler
- php - php 将 POST['integer string'] 与数据库中的整数进行比较
- shell - 扫描文件的每一行并查找匹配 (|##|) ,如果找到,则在下一行前面添加双引号