比方说我有一个类似下面的类方法-
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中添加注释以及类型提示的推荐方法吗?
答案 0 :(得分:1)
param
被视为描述而不是类型注释,这就是第二个示例不起作用的原因。
您在这里有两个选择:
向文档字符串添加描述和类型:
class Class:
def method(self, p1, p2):
"""
:param p1: parameter 1
:type p1: str
:param p2: parameter 2
:type p2: str
"""
在类型注释中为文档字符串和文档类型添加描述(必须在文档字符串之前,否则Pycharm无法识别它)。
class Class:
def method(self, p1, p2):
# type: (str, str) -> None
"""
:param p1: parameter 1
:param p2: parameter 2
"""