我来自扎实的 C/C++ 背景,所以如果我的问题很愚蠢,请多多包涵。
这里我有两个声明封装数据的类,
class Node:
Term = ""
TermInfo = []
def __init__(self,S,Info):
self.Term = S
self.TermInfo.append(Info)
class TermInfo:
DocID = 0
Freq = 0
def __init__(self,ID,F):
self.DocID = ID
self.Freq = F
我试图以这种方式操纵它们
Info = TermInfo(ID,0)
node = Node(j,Info)
Dict[j] = node
基本上,我试图构建一个字典,其中包含由字符串“Term”和“Terminfo”列表组成的节点,我希望每个节点都有自己的副本。但是,在我连续两次调用这三行之后
Info = TermInfo(ID,0)
node = Node(j,Info)
Dict[j] = node
Info = TermInfo(ID,0)
node = Node(j,Info)
Dict[j] = node
我惊讶地发现“TermInfo”的两个列表都指向同一个内存地址,而第二个 append() 也改变了第一个列表,那么我如何确保每个节点都有自己的副本而不是指向同一个地址?谢谢