Skip to main content
 首页 » 编程设计

python之PyCharm 中不自动完成的类方法列表

2025年05月04日25xing901022

我是 python 的新手,我有一个关于使用 Pycharm 自动完成列表中对象的方法调用的问题。

我有一个名为 foo() 的类:

class foo(object): 
 
    def __init__(self): 
        self.num = 10 
 
 
    def getNum(self): 
        return self.num 

然后我创建一个名为 myList 的列表,并向其附加一个 foo() 对象。出于某种原因,当我尝试调用该对象时,该方法没有出现。

但是,如果我用 print(myList[0].getNum()) 完成代码,它确实会打印出 10。

此外,如果我简单地创建一个变量 x 并将其分配给一个 foo() 对象,它会显示得很好,如下所示:

我尝试创建一个 y 变量并将其分配给 myList[0] 以查看是否可以让该方法显示出来,但仍然没有成功。

这只是一个 IDE 问题,还是我在使用列表中的对象进行方法调用时遗漏了一个更大的图景。

请您参考如下方法:

原因是python有动态类型。没有限制 myList 必须仅包含 foo 对象。因此 PyCharm 无法知道 myList[0] 是一个 foo 来为您提供 foo 的自动完成功能(仅在运行时才知道)。

举个例子:

class foo(object): 
 
    def __init__(self): 
        self.num = 10 
 
 
    def getNum(self): 
        return self.num 
 
class bar(object): 
 
    def __init__(self): 
        self.num = 10 
 
 
    def getNum2(self): 
        return self.num 
 
myList = [] 
myList.append(foo()) 
myList.append(bar()) 
print(myList[0]) 

PyCharm 不知道是否为您提供 foo() 或 bar() 的自动完成功能,因此它也不会为您提供。

关于 x 的最后一个案例是有效的,因为您明确地将 x 指定为 foo 对象,因此 Pycharm 知道并为您提供 foo 的自动完成。