1
我的類「NodeCreate」中的類變量「adjList」存在問題。似乎只要我追加到adjList中,它就被擴展用於該類的所有對象,而不僅僅是我所調用的那個對象。我認爲我從根本上誤解了一些東西,但我無法弄清楚我應該做什麼。我怎樣才能追加到每個對象的adjList?類變量不是靜態的嗎?
代碼:
import sys
class FileReader:
edgeList = []
def __init__(self, args):
with open(args, 'r') as inFile:
#get the node list
self.nodeList = inFile.readline().strip().split()
while 1:
line = inFile.readline().strip()
if not line:
break
self.edgeList.append(line)
class NodeCreate:
adjList = []
def __init__(self, name):
self.name = name
def main():
nodeObjDict = {}
#read in nodes
fr = FileReader(sys.argv[1])
#make node objects
for node in fr.nodeList:
nodeObjDict[node] = NodeCreate(node)
#make smaller items from edgeList
for item in fr.edgeList:
itemList = item.split()
#add adjacent lists
nodeObjDict[itemList[0]].adjList.append(itemList[1])
print(nodeObjDict[itemList[0]].adjList)
if __name__ == "__main__":
main()
輸入:
A B C D E F G
A B
A D
A F
B C
B G
C D
我最終什麼得到用於我的打印輸出是這樣的:[ 'B', 'd', 'F',「C ','G','D'],即使對於A.adjList。我期待的只是['B','D','F']。
感謝您的幫助。我很難理解。 – Ci3
沒問題;起初它很混亂。 –