如何在Pycharm 2018.2中的类方法声明中添加带有类型提示的文档?

时间:2018-09-12 14:15:44

标签: python python-2.7 pycharm

比方说我有一个类似下面的类方法-

class BasePreStep:
    def __init__(self, threadpool, release_manifest, service_manifest, upgrade_bundle, system_config):

如果我添加如下所示的类型提示,则自动补全在python文件中可以正常工作

class BasePreStep:
    __metaclass__ = ABCMeta

    def __init__(self, threadpool, release_manifest, service_manifest, upgrade_bundle, system_config):
        # type: (self, ThreadPool, service_version_pb2.ReleaseManifest, service_version_pb2.ServiceManifest, str, SystemConfig) -> ()

但是,如果我添加如下所示的注释(如here所述),则自动完成功能在python文件中不起作用。

BasePreStep类:     元类 = ABCMeta

def __init__(self, threadpool, release_manifest, service_manifest, upgrade_bundle, system_config):
    """

    :param threadpool: Threadpool
    :param release_manifest: service_version_pb2.ReleaseManifest
    :param service_manifest: service_version_pb2.ServiceManifest
    :param upgrade_bundle: str
    :param system_config: SystemConfig
    """

有人可以让我知道在Pycharm中添加注释以及类型提示的推荐方法吗?

  • Python 2.7
  • Pycharm 2018.2

1 个答案:

答案 0 :(得分:1)

文档字符串中的

param被视为描述而不是类型注释,这就是第二个示例不起作用的原因。

您在这里有两个选择:

  1. 向文档字符串添加描述和类型:

    class Class:
        def method(self, p1, p2):
            """
    
            :param p1: parameter 1
            :type p1: str
            :param p2: parameter 2
            :type p2: str
            """
    
  2. 在类型注释中为文档字符串和文档类型添加描述(必须在文档字符串之前,否则Pycharm无法识别它)。

    class Class:
        def method(self, p1, p2):
            # type: (str, str) -> None
            """
    
            :param p1: parameter 1
            :param p2: parameter 2
            """