我发现自己在__init__.py文件中使用了以下模式:
from tool.shed import shovel
from tool.shed import bucket
__all__ = [shovel, bucket]
Run Code Online (Sandbox Code Playgroud)
这样的代码适用于我尝试过的所有python版本,但似乎这是一个意外。我还没有看到它在任何地方提到__all__可以是对象列表(而不是字符串),而且,这在运行时被报告为错误mypy:
Type of __all__ must be "Sequence[str]", not "List[object]"
有什么理由__all__应该是字符串列表吗?或者对象也可以吗?
from mymod import *这样做你会崩溃的。__all__不以其他方式使用。
>>> from a import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<frozen importlib._bootstrap>", line 1019, in _handle_fromlist
File "<frozen importlib._bootstrap>", line 1014, in _handle_fromlist
TypeError: Item in a.__all__ must be str, not module
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
747 次 |
| 最近记录: |