-1

假设我有这样的功能:

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 无法知道里面有什么。我如何通过使用评论来告诉它?

在 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 文档实现相同的行为?

4

2 回答 2

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,您可以使用typeor isinstance,请参阅以下伪代码:

type(someobject)
if isinstance(someobject, ClassA):
    print "someobject is a ClassA variable"
于 2012-04-17T16:42:21.723 回答
0

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

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

def render(someobject :ObjectClass):
    dorender()

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

编辑:

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

于 2012-04-17T16:49:17.920 回答