Python记录器,IDE指导

时间:2012-04-17 16:41:08

标签: python ide pycharm

假设我有这样的功能:

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 specificaly和python documentators共同实现相同的行为?

2 个答案:

答案 0 :(得分:1)

使用docstring

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

可在此处找到更多信息http://en.wikipedia.org/wiki/Docstring#Python

您可以使用 introspection 来查找对象的方法,属性等:

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"

答案 1 :(得分:0)

我不确定它是否适用于PyCharm(我不使用它) - 但是对于Python 3 function annotations已被添加。

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

def render(someobject :ObjectClass):
    dorender()

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

修改

经过一次小测试后,我猜这应该有用(这非常棒)。