【问题标题】:Python documentator, IDE guidingPython 文档,IDE 指导
【发布时间】:2012-04-29 00:55:07
【问题描述】:

假设我有这样的功能:

def render(someobject):
 someobject. #here i expect IDE to know which class it is and autocompletion and other IDE functional will be available
 dorender()

在我的情况下,IDE 无法知道里面有什么。 如何使用 cmets 来判断?

如果是 PHP,我使用过类似的东西

/**
 * @param MyClass myobject
**/
function render($myobject){
  //by typing $myobject-> IDE already knows, that it should use $myobject as MyClass objec
  dorender()
}

另一个用例是当我知道时,在某些情况下某些代理会返回某些对象 IDE没有机会知道,但我肯定知道并想通过评论指定这一点,以帮助自己将来帮助IDE。

在 PHP 中使用 PhpStorm 我会执行以下操作:

$myobject=some_proxy()
/**
 * @var $my_object MyClass
**/
// in following code IDE will use $myobject as MyClass

如何使用 PyCharm 和 python 文档实现相同的行为?

【问题讨论】:

标签: python ide pycharm


【解决方案1】:

使用docstring

def render(someobject):
    """ This methods renders some object. """
    dorender()

更多信息可以在这里找到http://en.wikipedia.org/wiki/Docstring#Python

您可以使用自省来了解对象的方法、属性等:

dir(object)
help(object)

基于自省的自动补全和 IDE 集成是可能的,Python.org 网站上有更详细的信息:http://wiki.python.org/moin/IntegratedDevelopmentEnvironments

要找出someobject是什么,可以使用typeisinstance,见以下伪代码:

type(someobject)
if isinstance(someobject, ClassA):
    print "someobject is a ClassA variable"

【讨论】:

  • 但再一次,这只是给我的小费。 IDE 仍然不知道它是什么类型的对象。例如我想做(内部函数)someobject。(开始打字,想看相关方法)
  • IDE 与代码自动完成的集成取决于您的 IDE,请参阅我对此的更新答案。
  • 阿吉安,帮助,目录 - 只适合我。它不启用 IDE 的自省。请更仔细地阅读问题。我知道 docsrting,但也许我错过了重点,但我看不到指定哪个类属于某个对象的 IDE(不是我自己和使用 docstring 的 doc-builders)的方法。所以我可以稍后进行重构,使用“查找用法”,使用自动完成。任何可以做的事情,只有当 MyClass 被明确指定时
【解决方案2】:

我不确定它是否可以在 PyCharm 中工作(我不使用它) - 但是为 Python 3 添加了function annotations

您可以将它们放入函数的定义中:

def render(someobject :ObjectClass):
    dorender()

也许 PyCharm 会使用它来定义某些对象上可用的方法。

编辑:

经过一个小测试,我想这应该可以工作(这非常棒)。

【讨论】:

  • 谢谢,但它不适用于 python 2.x 。在 PHP 中,phpdoc 是工作标准,所有 IDE 都支持它的注释。 phpstorm、netbeans、eclipse 等等。看起来python只是没有这样的标准:(
  • 至少我知道文档字符串中没有提到对象类的约定——我想允许对 Python 3 中添加的代码函数注释进行静态解释。
猜你喜欢
  • 2014-08-10
  • 2022-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-09
  • 2012-10-06
  • 2021-12-02
相关资源
最近更新 更多