【问题标题】:Autocompletion with type hinting in PyCharm for lists of specific type在 PyCharm 中使用类型提示自动完成特定类型的列表
【发布时间】:2019-03-17 07:41:38
【问题描述】:

This answer 展示了如何在 PyCharm 中对列表使用类型提示。但是是否可以提示 PyCharm 列表中存在哪些类型的对象?我知道 python 中的列表可以有不同类型的对象。但只是为了自动完成,我想要这个。假设,如果我有一个listnumpy.ndarrays,我可以提示一下,以便当我执行obj_list[0]. 时,PyCharm 会给我numpy.ndarray 的自动补全功能吗? 谢谢

【问题讨论】:

    标签: python python-3.x pycharm type-hinting


    【解决方案1】:

    Pycharm 确实对此提供了一些支持,但目前并不完美(我使用的是 2018.2.4 版本)。

    对于大多数类型,它都运行良好(测试了内置类型和一些简单的自定义类):

    # hint type in function document:
    
    def func(a):
        """
        :param a:
        :type a list[str]
        :return:
        """
        a[0]   # will autocomplete 
    
    # another way, use `typing` module
    from typing import List
    def func(a: List[str]):
        a[0]   # will autocomplete
    

    不幸的是,这两种方法现在都不适用于 numpy 类型。 Pycharm 会抱怨cannot find reference ndarray in __init__.py

    【讨论】:

    • 工作就像一个魅力!实际上我有一个我的自定义类的列表。所以,我输入了:type images_list list[ImageData]。它运行良好。事实上,我什至测试了:type images_list list[list[ImageData]],而且效果也很好。我正在使用 PyCharm 2018.2.4(社区版)
    • 第二种方式不支持自定义类。它显示错误。此外,当两者都使用时,第二种方法优先于第一种方法
    猜你喜欢
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2015-05-01
    • 2013-12-26
    • 2015-11-23
    • 2019-03-08
    • 2017-11-30
    相关资源
    最近更新 更多