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

2024-06-09 21:23:13 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一个如下的类方法-

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版
  • 皮查姆2018.2

Tags: selfconfigreleaseparaminitversiondefservice
1条回答
网友
1楼 · 发布于 2024-06-09 21:23:13

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

这里有两个选项:

  1. 向docstring添加说明和类型:

    class Class:
        def method(self, p1, p2):
            """
    
            :param p1: parameter 1
            :type p1: str
            :param p2: parameter 2
            :type p2: str
            """
    
  2. 在类型注释中为docstring和文档类型添加说明(注释必须位于docstring之前,否则Pycharm将无法识别它)。你知道吗

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

相关问题 更多 >