代码之家  ›  专栏  ›  技术社区  ›  tuk

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

  •  1
  • tuk  · 技术社区  · 7 年前

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

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

    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

    类BasePreStep:

    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版
    1 回复  |  直到 7 年前
        1
  •  1
  •   Mikhail Burshteyn    7 年前

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

    这里有两个选项:

    1. 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
              """