我是 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 的自动完成。
