PyCharm 中未自动完成的类方法列表

Nat*_*han 1 python pycharm

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

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

class foo(object):

    def __init__(self):
        self.num = 10


    def getNum(self):
        return self.num
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

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

此外,如果我只是创建一个变量x并将其分配给一个foo()对象,它会像这样显示得很好: 在此处输入图片说明

我尝试创建一个y变量并将其分配给它以myList[0]查看是否可以显示该方法,但仍然没有运气。在此处输入图片说明

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

小智 5

原因是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])
Run Code Online (Sandbox Code Playgroud)

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

关于 x 的最后一种情况有效,因为您明确将 x 指定为 foo 对象,因此 Pycharm 知道并为您提供 foo 的自动完成功能。