假设我有这样的函数:
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。
在使用 PhpStorm 时,我会在 PHP 中执行以下操作:
$myobject=some_proxy()
/**
* @var $my_object MyClass
**/
// in following code IDE will use $myobject as MyClass
我怎样才能通过 PyCharm 和 python 文档器来实现相同的行为?
使用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
是什么,可以使用type
或isinstance
,请参阅以下伪代码:
type(someobject)
if isinstance(someobject, ClassA):
print "someobject is a ClassA variable"
我不确定它是否可以在 PyCharm 中使用(我不使用它) - 但对于 Python 3 添加了函数注释。
您可以将这些放入函数的定义中:
def render(someobject :ObjectClass):
dorender()
也许 PyCharm 会使用它来定义哪些方法在某个对象上可用。
编辑:
经过一个小测试,我想这应该可以工作(这非常棒)。