最近,我使用pycharm来实现一些简单的算法。 但我发现了一个相当令人惊讶的事实。
这是我的代码
def main():
n = Node(2)
n.nextNode=Node(1)
def TraverseNodes(node):
if node.nextNode = None
print(node.num)
else:
print(node.num)
TraverseNodes(node.nextNode)
class Node():
nextNode = None
num = None
def __init__(self,num):
self.num = num
def appendNext(self,next):
self.nextNode=next
main()
据我所知,python是一种动态类型语言,这意味着该类型在运行时被解释。
所以pycharm不应该知道"节点" TrasverseNode方法中的参数属于。
但是当我真正写出方法的细节时,intellisense似乎能够推断出类型是节点?!
(我尝试了不同的参数名称,只有"节点"可能导致这种行为,其他人可以&#t; t。这是否意味着pycharm可以通过名称中的相似性来推断类型?)
非常感谢。
答案 0 :(得分:2)
是。如果你有一个变量和一个与变量同名但是大写的类,PyCharm会假设变量可能是该类的一个实例,并在完成弹出窗口中建议该类的成员。
(这仅影响完成 - 例如,如果您访问未在此类中定义的成员,则不会显示警告。)