假设我有这样的功能:
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共同实现相同的行为?
答案 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
是什么,您可以使用type
或isinstance
,请参阅以下伪代码:
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将使用它来定义某些对象可用的方法。
修改强>
经过一次小测试后,我猜这应该有用(这非常棒)。