Python 使用Eclipse+自动完成;函数参数的PyDev
我正在Windows XP机器上使用Eclipse和PyDev以及Iron Python。我有一个类定义,它将一个对象作为一个参数,它本身就是另一个类的实例化,如下所示:Python 使用Eclipse+自动完成;函数参数的PyDev,python,eclipse,pydev,Python,Eclipse,Pydev,我正在Windows XP机器上使用Eclipse和PyDev以及Iron Python。我有一个类定义,它将一个对象作为一个参数,它本身就是另一个类的实例化,如下所示: myObject1 = MyClass1() myObject2 = MyClass2(myObject1) """ myclass2.py """ class MyClass2(): def __init__(self, myObject1): self.myObject1 = myObject1
myObject1 = MyClass1()
myObject2 = MyClass2(myObject1)
""" myclass2.py """
class MyClass2():
def __init__(self, myObject1):
self.myObject1 = myObject1
self.myObject1. <============== would like auto code completion here
这两个类定义在不同的模块中,myclass1.py和myclass2.py,我希望在myclass2中使用myObject1时能够自动完成。换句话说,在myclass2.py文件中,我可能有如下内容:
myObject1 = MyClass1()
myObject2 = MyClass2(myObject1)
""" myclass2.py """
class MyClass2():
def __init__(self, myObject1):
self.myObject1 = myObject1
self.myObject1. <============== would like auto code completion here
“myclass2.py”
类MyClass2():
定义初始化(自我,MyObject 1):
self.myObject1=myObject1
self.myObject1 在PyDev/Eclipse中使用Jython,我也很想知道这一点。代码完成应该适用于您在MyClass2的其他地方使用过的MyClass1方法,但不适用于整个API。我认为这是因为您可以动态地从类中添加和删除方法,所以Eclipse不能保证存在任何特定的方法,或者方法列表是完整的
例如:
>>> class a:
... def b(self):
... print('b')
...
>>> anA = a()
>>> anA.b()
b
>>> del a.b
>>> anA.b()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: a instance has no attribute 'b'
>>a类:
... def b(自我):
... 打印('b')
...
>>>anA=a()
>>>A.b()
B
>>>德尔a.b
>>>A.b()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:实例没有属性“b”
因此,如果代码完成在这里向您展示了方法b(),那么它将是不正确的
同样地
>>> class a:
... pass
...
>>> anA = a()
>>> anA.b()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: a instance has no attribute 'b'
>>> def b(self):
... print('b')
...
>>> a.b = b
>>> anA.b()
b
>>a类:
... 通过
...
>>>anA=a()
>>>A.b()
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
AttributeError:实例没有属性“b”
>>>def b(自我):
... 打印('b')
...
>>>a.b=b
>>>A.b()
B
因此,没有显示方法b()的代码完成是不正确的
我可能错了,但我认为这是一个可靠的猜测 您的源文件夹中是否有\uuuu init\uuuu.py
?它可以是空的,但它应该存在于所有文件夹中,以便Python知道如何读取其中包含的类文件以实现自动完成。对于创建对象的垃圾邮件行(如果为False…
),我的Pydev 2.5也可以
""" myclass2.py """
class MyClass2():
def __init__(self, myObject1):
if False : myObject1 = MyClass1()
self.myObject1 = myObject1
self.myObject1. <============== would like auto code completion here
“myclass2.py”
类MyClass2():
定义初始化(自我,MyObject 1):
如果为False:myObject1=MyClass1()
self.myObject1=myObject1
self.myObject1。是的,我在所有文件夹中都有空的init.py文件。当您创建一个新的包时,Eclipse很好地为您创建了它们。我真的希望有人能对此给出明确的答案。有几个人喜欢这个问题,因此,如果您自己发现了任何其他问题,请务必更新它。可能使用文档作为参数类型: