如何让PyCharm在方法中自动完成代码?

19 投票
4 回答
12170 浏览
提问于 2025-04-16 13:43

当我使用像 boto 这样的第三方库时,PyCharm 的自动补全功能似乎很好用。

在这里输入图片描述

但是,一旦我自己定义了一个函数,自动补全功能在这个函数内部就失效了。我明白这是为什么,因为我没有给这个函数的参数提供任何类型信息,所以它无法猜测如何进行自动补全。有没有办法解决这个问题呢?

编辑

我尝试使用文档字符串(针对 Python 2),但仍然没有自动补全。

def delete_oldest_backups(conn, backups_to_keep, backup_description):
    """
    delete_oldest_backups(EC2Connection, int, string)
    """

(我还尝试了 boto.ec2.connection.EC2Connection,而不仅仅是 EC2Connection

4 个回答

1

为了让PyCharm识别一个对象的实例并获取它的所有方法,我们需要使用以下语句。不过我觉得这样做真的是浪费编程时间和运行时间。

assert isinstance(instanceX, ClassOfInstanceX)  
instanceX.{#list of method/properties appears}

另外,你也可以使用类名来调用方法或属性,每次想用的时候都传入实例作为self参数。但我觉得这样太啰嗦了,尤其是对于嵌套类来说。

ClassOfInstanceX.{#list of method/properties appears}
     # then you will have...
ClassOfInstance.method(instanceX, args...)
5

你可以在Python 3中通过参数和返回值的注解来说明函数参数的类型信息。如果你在使用Python 2,也可以在函数的文档字符串中提供这些信息。PyCharm能够理解标准库中二进制模块的文档字符串格式,比如:

"""
foo(int, string) -> list

Returns the list of something
"""
14

你可以使用类型提示:http://www.jetbrains.com/pycharm/webhelp/type-hinting-in-pycharm.html

 def some_method(self, conn):
   """
   @type conn: EC2Connection
   """
   conn.<autocomplete>

撰写回答