我有一個物件串列,稱為Civilizations并初始化為
Civilizations = []
我也有一個類文明和類母艦作為
class Civilization():
name = "Default Civilization"
hero_count = 1
builder_count = 20
mothership = []
def __init__(self, param, name, hero_count):
self.param = param
self.name = name
self.hero_count = hero_count
class Mothership():
name = ""
coord_x = 0.0
coord_y = 0.0
coord_size = 50
def __init__(self, name, coord_x, coord_y):
self.name = name
self.coord_x = coord_x
self.coord_y = coord_y
red = Civilization(10, "RED", 1)
blue = Civilization(12, "BLUE", 1)
Civilizations.append(red)
Civilizations.append(blue)
orange = Mothership("Stasis", 300.0, 500.0)
red.mothership.append(orange)
yellow = Mothership("Prime", 350.0, 550.0)
blue.mothership.append(yellow)
x = []
y = []
s = []
n = []
print(Civilizations)
for t in Civilizations:
a = t.mothership[0]
print(a)
# x.append(a.coord_x)
# y.append(a.coord_y)
# s.append(a.coord_size)
# n.append(a.name)
print(n)
print(x)
結果列印 (a) 給了我們<__main__.Mothership object at 0x0000029412E240A0>兩次,并且 x 最終看起來像[300,300]。有沒有辦法遍歷物件并獲取它們的各個屬性?我試圖讓 x 看起來像[300, 350].
謝謝您的幫助!
uj5u.com熱心網友回復:
問題在于以下兩行代碼。
for t in Civilizations:
a = t.mothership[0]
文明類中的母艦串列將附加兩個物件。Civilizations.mothership = [ obj_orange, obj_yellow ]
由于您的母艦串列在索引 0 和 1 中有兩個值。在您的代碼中,您僅使用索引 0 來檢索整個回圈中的值。您的回圈運行兩次并回傳相同的物件 (obj_orange) 兩次。
您必須從索引 0 和 1 中檢索兩個值,如下所示
for t in Civilizations:
a = t.mothership[0]
b = t.mothership[1]
或者,您可以簡單地使用“列舉”,這在您不知道串列中元素的數量等情況下是非常好的做法。
for i, t in enumerate(Civilizations):
print(t.mothership[i])
其中 i = 索引號,t = 值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394046.html
