是否存在一个Python IDE,允许人们模拟类似C的intellisense来自动完成对象上的方法调用?
例如,假设我有以下代码:是否存在一个Python IDE,允许人们模拟类似C的intellisense来自动完成对象上的方法调用?,python,Python,例如,假设我有以下代码: class Foo(object): def bar(self, x): '''blah blah blah''' return x+1 假设我正在创建另一个类,该类具有一个方法,该方法获取一个Foo对象的实例并执行以下操作: class Baz(object): def goo(self, foo): foo.bar(1) ### I am a 'Foo' object. Auto-complete me, please 我非常希望
class Foo(object):
def bar(self, x):
'''blah blah blah'''
return x+1
假设我正在创建另一个类,该类具有一个方法,该方法获取一个Foo对象的实例并执行以下操作:
class Baz(object):
def goo(self, foo):
foo.bar(1) ### I am a 'Foo' object. Auto-complete me, please
我非常希望在Baz类中创建goo()方法时键入foo.
后,IDE能为我提供intellisense。你知道,显示Foo类的可用方法、它们的参数、它们的doc等等
在C#中,我必须声明参数'foo'是'foo'类型,因此自动补全很简单
我意识到Python是动态类型的,因此任何IDE都无法知道'foo'参数是foo类型的。但是,是否有其他一些信息、指令或约定,某些IDE可以用来确定类型。。。完全是为了智能感知和自动完成
我发现的一个解决方法是键入Foo.
,这将导致大多数IDE显示Foo中方法的intellisense。这是有用的,但它不是我想要的
另一种解决方法是键入foo=foo()
,然后像往常一样使用foo。一些IDE嗅探到foo是foo类型并提供intellisense。但是,您必须记住删除行foo=foo()
,否则您会遇到一个严重的错误
也许,有一个更好的方法来完成我想做的事情。我正在使用C#intellisense作为参考点,这可能是Visual Studio的事情,而在编写Python时,我应该敞开心扉,用不同的方式完成类似的事情。如有任何建议,将不胜感激。我肯定我不是唯一一个渴望Python对象智能感知的人。如果你只有
def-goo(self,foo):
没有人调用它,就无法知道foo
将是什么类型。但是,如果使用已知的Foo
在代码中调用goo
,IDE会发现goo
总是被传递一个Foo
,并且自动完成可以工作。这就是工作原理
但请注意,这并不是非常有用,因为它要求您在实际编写函数之前编写调用该函数的代码。这里有一个片段表明,如果你让它变得明显,它是有效的:看看Jetbrains的PyCharm。当引用变量的名称与类名匹配(不区分大小写)时,它可以自动完成实例上的方法名 这里的屏幕截图不错(向下滚动并单击左侧的第三幅图像): 我应该提到,这个功能是有限的(因为Python是动态类型的),但它比我尝试过的任何其他Python IDE都要好。这一点,加上许多其他伟大的特性,使它成为我的首选