Pydev缺失库代码自动完成功能

4
我今天想了解一下Python/Pygame,所以选择了Pydev作为我的IDE。总体来说还不错,但是它好像缺少Pygame类的自动补全功能。
在"screen"变量中,它只列出了所有"x"函数,我猜这些是默认的类对象函数。 Pydev文件夹已添加到PYTHONPATH中。
import os, sys
import pygame
from pygame.locals import *

class Main:

    background_colour = (255,0,255)

    def __init__(self):
        pygame.init();
        self.screen = pygame.display.set_mode((500, 500));
        self.screen.fill(self.background_colour);
        pygame.display.flip();

        running = True
        while running:

            self.update();

            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    running = False


    def update(self):
        pass

if __name__ == '__main__':
    Main()

代码运行得非常顺畅,但对于像我这样的pygame/python新手来说,没有任何代码补全实在是难以忍受。

我刚刚将“pygame”添加到强制内置中,但没有任何区别。 - omgnoseat
你是否在 Window > Preferences > Pydev > Editor > Code Completion 中启用了 Use Code Completion? - sloth
1个回答

5
问题在于pydev不知道self.screen的类型。
一种解决方法是使用本地变量和assert isinstance(...)来帮助pydev。

enter image description here


那真是相当难看,但我想这能用。 我原本希望强制内置功能在编辑时能编译文件,这样就知道类型了。但也罢。 这是某种“hacky”方法吗,还是这就是assert的唯一用途? - omgnoseat
这很不专业,没错。对于像Python这样的动态语言来说,代码补全确实非常困难,因为在运行时一切都可能发生变化,可以创建全新的类型、更改方法、动态导入模块等等。但是Pygame并不太复杂,而且我通常倾向于随时手头有文档 - sloth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接