0
我是python的新手,但我有很多C++,Java和.NET的經驗。我希望有人能夠解釋爲什麼這個示例程序的工作方式如何,以及如何將其改變爲以我希望的方式工作。Python中列表的問題
基本上,我試圖創建一個對象列表,並且列表中的每個對象都包含一個對象列表。最後,子列表都是相同的列表,而不是對其父類的實例唯一的。
class Obj1(object):
list_of_obj2 = []
name = ''
class Obj2(object):
name = ''
list_of_obj1 = []
for i in range(2):
new_obj1 = Obj1()
new_obj1.name = "obj1_%s" % i
print "Creating Object1 named %s" % new_obj1.name
for j in range(2):
new_obj2 = Obj2()
new_obj2.name = "...obj2_%s_%s" % (i, j)
new_obj1.list_of_obj2.append(new_obj2)
print "...Added Object2 named %s to %s list" % (new_obj2.name, new_obj1.name)
list_of_obj1.append(new_obj1)
print "Added Object1 named %s to master list" % (new_obj1.name)
print ""
for obj in list_of_obj1:
print "%s has %s items in list" % (obj.name, len(obj.list_of_obj2))
for obj2 in obj.list_of_obj2:
print "...%s" % obj2.name
程序的輸出:
Creating Object1 named obj1_0
...Added Object2 named ...obj2_0_0 to obj1_0 list
...Added Object2 named ...obj2_0_1 to obj1_0 list
Added Object1 named obj1_0 to master list
Creating Object1 named obj1_1
...Added Object2 named ...obj2_1_0 to obj1_1 list
...Added Object2 named ...obj2_1_1 to obj1_1 list
Added Object1 named obj1_1 to master list
obj1_0 has 4 items in list
......obj2_0_0
......obj2_0_1
......obj2_1_0
......obj2_1_1
obj1_1 has 4 items in list
......obj2_0_0
......obj2_0_1
......obj2_1_0
......obj2_1_1
爲什麼不兩OBJ1列出各有2個項目?有沒有更好的方法來實現這一點?
思考。如果你需要對象變量,你需要在__init__中定義它們,就像HYRY說的那樣。 – Bogdan