在 PyCharm 中为 Python 键入提示 2.7(命名元组)

Type hints in PyCharm for Python 2.7 (named tuple)

不幸的是,args 上的自动完成在方法 foo()

中不起作用
# -*- coding: utf-8 -*-
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

from collections import namedtuple

CreateVhostDoArgs = namedtuple('CreateVhostDoArgs',
                               ['project_directory', 'branch', 'vhost_dir'])


def foo(args):
    # type (CreateVhostDoArgs) -> None
    print(args.project_directory)



if __name__ == '__main__':
    foo(CreateVhostDoArgs('pd', 'branch', 'dir'))

如何更改我的类型提示,以便 PyCharm 为我提供 args.proje... 的自动完成功能?

尝试:

def foo(args):
   """
   :type args: CreateVhostDoArgs
   """ 

在设置中有不同的文档字符串格式,可能对您有用。 Settings | Tools | Python Integrated Tools 我测试的默认值是 reStructredText。其他人的行为可能会有所不同(或根本不同)

SO post 中,如果您需要更多详细信息,我会尝试在 PyCharm 中扩展 a-lot 类型提示。

我 a-lot 几年前就这样做了,当时 python 首次引入了类型提示 pycharm 很快推出了支持它的更新,但它并不支持PEP 大纲,我想我只发现 reStructredText 可以工作,但从那以后事情可能已经改变了。当我当时这样做的时候,我记得维护 class 名称更改并且没有正确传播到文档字符串真的很烦人。如果该类型实际上没有在文件中使用(未导入),它就不会给出错误或警告,我猜它只是认为你是一个愚蠢的用户,在里面写错了东西。然后你需要为评论中的某些东西做一个导入,这几天似乎 PyCharm 没有抱怨,但如果你有其他 linters,他们可能会。可能还有其他需要注意的陷阱,因此请谨慎行事。

它确实有效,但我不推荐给 python 3.5+ 中的任何人(当 python 引入类型提示时),原因在另一个 post 中详述。

我确实在本地专门用 namedtuple 进行了测试并且它有效。