我是 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 的自动完成功能。
归档时间: |
|
查看次数: |
1528 次 |
最近记录: |