我的任務其實很簡單。也許我太習慣C++,看不到我的錯。 我有兩個類和一個列表。 該列表應該包含由class1構成的所有對象,而class1也包含用於class2的所有對象的列表。 因此,我們有:如何創建「個人」對象
All_Objects1 = [] # For class1 objects
class class1 (object):
All_Objects2 = [] # For class2 objects
class class2 (object):
name = ""
number = 0
現在我這樣做:
# class1 objects:
obj1= class1()
obj2= class1()
# class2 objects
obj3 = class2()
obj3.name, obj3.number = "hello world", 10
obj4 = class2()
obj4.name, obj3.number = "hello europe", 20
obj5 = class2()
obj5.name, obj3.number = "hello asia", 30
obj6 = class2()
obj6.name, obj3.number = "hello africa", 40
# Attach object3 and object4 to object1
obj1.All_Objects2.append(obj3)
obj1.All_Objects2.append(obj4)
# Attach object5 and object6 to object2
obj2.All_Objects2.append(obj5)
obj2.All_Objects2.append(obj6)
# Attach obj1 and obj2 to the global list.
All_Objects1.append(obj1)
All_Objects1.append(obj2)
最後我做一個打印檢查,如果一切是它屬於:
print (len(All_Objects1[0].All_Objects2)) # Should be 2.
for i in All_Objects1[0].All_Objects2:
print (i.name) # Should be world and europe.
print (len(All_Objects1[1].All_Objects2)) # Should be 2.
for i in All_Objects1[1].All_Objects2: # Should be asia, africa.
print (i.name)
現在的問題是,每個對象都在每個對象中1,我不知道爲什麼。
在我實際的程序我做這樣的事情,你會在C實際工作++:
#pseudo
for i in all_information:
if (i==Keyword):
currentObject = class1()
All_objects.append(currentObject)
,然後我會在我的列表中的某些獨立的對象。但在Python中,我認爲我無法覆蓋「currentObject」。
非常感謝您的幫助。
嘗試向類中添加一個init函數;我想也許python不知道爲它創建新的內存塊:https://www.tutorialspoint.com/python/python_classes_objects。htm 甚至一個空/空init(只寫通過作爲唯一的命令)應該訣竅 –
爲什麼你要在類之外使用第一個列表?爲什麼你沒有初始化課堂?爲什麼你不使用繼承? –
'All_Objects2 = []'在所有對象中創建共享元素。使用'__init__'函數創建'self.All_Objects2 = []' – furas