首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的泛型函数类型

Python中的泛型函数类型
EN

Stack Overflow用户
提问于 2018-12-16 01:22:58
回答 1查看 5.5K关注 0票数 7

我在Eclipse 4.8和Pydev下的Linux Ubuntu 18.04上运行Python 3.7。

声明:

代码语言:javascript
复制
args:Dict[str: Optional[Any]] = {}

位于从我的测试代码导入的模块中。并且它被标记为来自typing.py的以下错误消息:

代码语言:javascript
复制
TypeError: Parameters to generic types must be types. Got slice(<class 'str'>, typing.Union[typing.Any, NoneType], None). The stack trace follows: Finding files... done. Importing test modules ... Traceback (most recent call last):   File "/Data/WiseOldBird/Eclipse/pool/plugins/org.python.pydev.core_7.0.3.201811082356/pysrc/_pydev_runfiles/pydev_runfiles.py", line 468, in __get_module_from_str
    mod = __import__(modname)   File "/Data/WiseOldBird/Workspaces/WikimediaAccess/WikimediaLoader/Tests/wiseoldbird/loaders/TestWikimediaLoader.py", line 10, in <module>
    from wiseoldbird.application_controller import main   File "/Data/WiseOldBird/Workspaces/WikimediaAccess/WikimediaLoader/src/wiseoldbird/application_controller.py", line 36, in <module>
    args:Dict[str: Optional[Any]] = {}   File "/usr/local/lib/python3.7/typing.py", line 251, in inner
    return func(*args, **kwds)   File "/usr/local/lib/python3.7/typing.py", line 626, in __getitem__
    params = tuple(_type_check(p, msg) for p in params)   File "/usr/local/lib/python3.7/typing.py", line 626, in <genexpr>
    params = tuple(_type_check(p, msg) for p in params)   File "/usr/local/lib/python3.7/typing.py", line 139, in _type_check
    raise TypeError(f"{msg} Got {arg!r:.100}.") TypeError: Parameters 

这会阻止我的测试模块被导入。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-12-16 01:30:32

字典类型的正确语法是

代码语言:javascript
复制
Dict[str, Optional[Any]]

当你写[a: b]的时候,Python会把它解释成一个切片,也就是像a[1:10]一样,让部分数组工作的东西。您可以在错误消息Got slice(<class 'str'>, typing.Union[typing.Any, NoneType], None)中看到这一点。

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53795514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档