假设我的类中有两个方法,methodA和methodB。在methodA中,我创建了一个X类的对象,然后我想将此对象传递给methodB。然而,当我编写methodB时,我希望知道X的类型,这样当我使用它时,键入我的IDE,我只需键入“X”。并查看S的方法和实例变量列表。这在python中是不可能的吗?
def methodA(self):
S = X()
self.methodB(S)
def methodB(self, S):
"S."....#here I want to see all the methods of variable S.
答案 0 :(得分:3)
这不是关于Python的问题。相反,这是关于IDE的问题。
我还没有看到能够做你所要求的IDE。另外,考虑到Python的动态特性,除了一些特殊情况外,实现这样的代码完成将非常困难。
答案 1 :(得分:0)
如果您的IDE支持rope插件,则可以获得部分自动完成支持。
我正在使用的编辑器(SublimeText)支持一个绳索插件,然后我可以输入:
class Class(object):
def __init__(self):
self.var1 = "one"
self.var2 = "two"
self.var3 = "three"
def method_1(self):
pass
def method_2(self):
self.var1 = "one**" # Autocomplete works here, no need of workarounds
def test_method(obj1_, obj2_):
# To make autocompletion works here, I start suffixing the parameters with _
if False: # Then I define each parameter statically
obj1 = Class()
obj2 = Class()
# Autocomplete now works!
obj1.method_1()
print obj2.var1
# Remember to rename obj1_ to obj1, ...
###
也许rope支持一种注释来使上述解决方法变得不必要,但我找不到好的例子。