为键和项目编写类型提示的正确方法
Posted
技术标签:
【中文标题】为键和项目编写类型提示的正确方法【英文标题】:Correct way to write type hints for keys and items 【发布时间】:2019-08-25 20:06:48 【问题描述】:我有一些 Python 代码(针对 Python 3.5、3.6 和 3.7 运行)并添加了一些类型提示,用于使用 mypy 进行静态类型检查。
请看下面的sn-p:
class MyParams(Singleton, metaclass=MyParamsMeta):
@classmethod
def keys(cls): # TODO -> type?
return cls._params.keys()
@classmethod
def items(cls): # TODO -> type?
return cls._params.items()
_params = _load_from_csv() # returns Dict[str, MyParam]
def keys(cls)
和 def items(cls)
的正确类型提示语句是什么?
【问题讨论】:
您查看过typing
文档吗?它提供例如KeysView
.
【参考方案1】:
你可以使用typing
模块
import typing
class MyParams(Singleton, metaclass=MyParamsMeta):
@classmethod
def keys(cls) -> typing.collections.KeysView:
return cls._params.keys()
@classmethod
def items(cls) -> typing.collections.ItemsView:
return cls._params.items()
_params = _load_from_csv() # returns Dict[str, MyParam]
【讨论】:
typing.collections.KeysView 在我的设置中没有找到,但是 typing.KeyView 没问题(python 3.6.8) @al.zatvpython Python 3.6.8 (default, Aug 20 2019, 17:12:48) Type 'copyright', 'credits' or 'license' for more information IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help. In [1]: import typing In [2]: typing.collections.KeysView Out[2]: collections.abc.KeysView In [3]:
以上是关于为键和项目编写类型提示的正确方法的主要内容,如果未能解决你的问题,请参考以下文章