Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Eclipse+自动完成;函数参数的PyDev_Python_Eclipse_Pydev - Fatal编程技术网

Python 使用Eclipse+自动完成;函数参数的PyDev

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

我正在Windows XP机器上使用Eclipse和PyDev以及Iron Python。我有一个类定义,它将一个对象作为一个参数,它本身就是另一个类的实例化,如下所示:

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很好地为您创建了它们。我真的希望有人能对此给出明确的答案。有几个人喜欢这个问题,因此,如果您自己发现了任何其他问题,请务必更新它。可能使用文档作为参数类型: