【问题标题】:How to get PyCharm to auto-complete code in methods?如何让 PyC​​harm 在方法中自动完成代码?
【发布时间】:2011-07-15 14:55:31
【问题描述】:

当我使用第 3 方时 l 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

【问题讨论】:

标签: python autocomplete pycharm


【解决方案1】:

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

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

【讨论】:

  • 在 PyCharm 5.0.1 上的工作就像一个魅力。谢谢!
  • 动态创建的模块呢?
【解决方案2】:

您可以使用 Python 3 参数和返回值注释指定有关函数参数的类型信息。如果您使用的是 Python 2,您还可以在函数的文档字符串中指定信息。 PyCharm 理解标准库中二进制模块的 docstrings 使用的格式,例如:

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

Returns the list of something
"""

【讨论】:

  • 我试过这个(见编辑过的问题),但仍然没有自动完成。
  • naither 对我有用: def get_instance_by_name(connection, name): """ get_instance_by_name(connection, name) -> boto.ec2.instance 返回具有指定名称 """ 的实例对象,我不这样做实例对象有 autocmpliton 可用
【解决方案3】:

为了让 PyC​​harm 识别对象的实例并检索其所有方法,我们必须使用以下语句。但我认为两者都是浪费编程和运行时间的可怕方式。

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...)

【讨论】:

    【解决方案4】:

    您可以通过 pyCharm“包管理器”安装该库。

    转到设置 -> 项目解释器 -> Python 解释器

    然后在 Packages 列表中,点击 install 并搜索你要安装的库

    安装后,编辑器将提供自动完成功能。

    希望这就是你要找的。​​p>

    【讨论】:

      猜你喜欢
      • 2020-07-31
      • 2015-05-05
      • 2021-01-29
      • 2015-12-16
      • 2016-09-17
      • 2016-11-09
      • 2020-01-27
      • 2013-09-26
      • 2019-03-20
      相关资源
      最近更新 更多