【发布时间】:2019-11-06 05:48:37
【问题描述】:
在我的 Python 3.7.4 代码中,我具有以下功能。
def is_dict(klass: ???) -> bool:
return klass.__origin__ == dict
我正在努力为klass 参数获取正确的类型注释。这不是 type,因为 mypy 抱怨。
错误:“
type”没有属性“__origin__”
我很茫然。什么是正确的注释,是否有任何关于它的好的文档?
以下是如何使用此函数的示例:
>>> is_dict(typing.Dict[str, int])
True
>>> is_dict(typing.List[str])
False
【问题讨论】:
-
你可能想要
typing.Type[ClassThatHasOrigin]: docs.python.org/3/library/typing.html#typing.Type -
那会是
Type[_AnnotatedAlias](见github.com/python/typing/blob/master/typing_extensions/src_py3/…),但这不会让mypy开心:error: Module 'typing_extensions' has no attribute '_AnnotatedAlias' -
并使用
Annotated而不是_AnnotatedAlias似乎没有区别@AlexHall -
我同意Alex,你需要一个有origin属性的类,你这里指的是哪个类?
-
您找到解决方案了吗?我也面临同样的问题
标签: python mypy python-typing