导致警告的变量类型注释
Variable type annotations leading to warnings
我是 Python 开发的新手,正在尝试解决问题。我正在使用 Pycharm 进行开发。我目前正在尝试注释变量的类型,以便通过自动完成和建议更轻松地访问。我已经尝试过代码的迭代,但结果不一。
这是有问题的代码:
path = os.path.dirname(os.path.realpath(__file__)) # type: str
components = path.split(os.sep) # type: list[str]
显示的第一个问题是在第二行类型注释的左大括号处。它说:
Class 'type' does not define '__getitem__', so the '[]' operator cannot be used on its instances.
我用谷歌搜索了一下,虽然问题看起来很清楚,但打开 list
class 的代码清楚地显示了一个方法 __getitem__
:
class list(object):
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
"""
....
def __getitem__(self, y): # real signature unknown; restored from __doc__
""" x.__getitem__(y) <==> x[y] """
pass
好吧,也许这并不容易理解,还有一些其他的加载机制在起作用。此外,"problem" 似乎是我使用的 list[str]
而不是 List[str]
。所以我修改了代码:
path = os.path.dirname(os.path.realpath(__file__)) # type: str
components = path.split(os.sep) # type: List[str]
现在一切都崩溃了:第二行现在抱怨这个:
Expected type 'List[str]', got 'List[str]' instead`
之前关于 __getitem__
的问题仍然存在。
有没有办法在不给检查器带来问题的情况下注释这些变量?在这方面,我对 Python 文档不是很满意,没有明确说明其内置方法的 return 类型。我必须依赖 Pycharm 文档弹出窗口 (Ctrl+q) 中提供的信息。
使用 List[str]
代替 list[str]
是正确的解决方案,因为内置类型不能用于类型提示,相应的 PEP 尚未被接受。
您从哪个模块导入 List
?我无法重现 2019.3 中的问题。
我是 Python 开发的新手,正在尝试解决问题。我正在使用 Pycharm 进行开发。我目前正在尝试注释变量的类型,以便通过自动完成和建议更轻松地访问。我已经尝试过代码的迭代,但结果不一。
这是有问题的代码:
path = os.path.dirname(os.path.realpath(__file__)) # type: str
components = path.split(os.sep) # type: list[str]
显示的第一个问题是在第二行类型注释的左大括号处。它说:
Class 'type' does not define '__getitem__', so the '[]' operator cannot be used on its instances.
我用谷歌搜索了一下,虽然问题看起来很清楚,但打开 list
class 的代码清楚地显示了一个方法 __getitem__
:
class list(object):
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
"""
....
def __getitem__(self, y): # real signature unknown; restored from __doc__
""" x.__getitem__(y) <==> x[y] """
pass
好吧,也许这并不容易理解,还有一些其他的加载机制在起作用。此外,"problem" 似乎是我使用的 list[str]
而不是 List[str]
。所以我修改了代码:
path = os.path.dirname(os.path.realpath(__file__)) # type: str
components = path.split(os.sep) # type: List[str]
现在一切都崩溃了:第二行现在抱怨这个:
Expected type 'List[str]', got 'List[str]' instead`
之前关于 __getitem__
的问题仍然存在。
有没有办法在不给检查器带来问题的情况下注释这些变量?在这方面,我对 Python 文档不是很满意,没有明确说明其内置方法的 return 类型。我必须依赖 Pycharm 文档弹出窗口 (Ctrl+q) 中提供的信息。
使用 List[str]
代替 list[str]
是正确的解决方案,因为内置类型不能用于类型提示,相应的 PEP 尚未被接受。
您从哪个模块导入 List
?我无法重现 2019.3 中的问题。