2016-09-28 57 views
0

我想自動創建以下列表:創建自動列表的

[Slot('1A', '0', 0), Slot('2A', '0', 0), 
Slot('1B', '0', 0], Slot ('2B,'0', 0), ....] 

通過定義插槽:

class Slot: 
    def __init__(self, address , card, stat): 
     self.address = address 
     self.card = card 
     self.stat = stat 


board = [] 
for i in range(1, 13): 
    for j in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I']: 
     board.append(Slot ((str(i)+j,'0', 0))) 
print(board) 

在Windows中使用Python 3.5。哪裏不對?我該怎麼做?謝謝。

+0

那麼有什麼問題:-)?什麼是輸出和它有什麼問題? – Kasramvd

+0

我很傾向於在那裏編輯'TypeError',但並不完全確定這是一個適當的操作。 –

+0

吉姆的回答非常有幫助。謝謝。 – Yossi7

回答

2

您已將單個參數傳遞給Slot,並將其傳遞給__init__,該參數需要三個參數(並且TypeError提示了該參數)。刪除不必要的一套括號:

board.append(Slot(str(i)+j,'0', 0)) 

它工作正常。

作爲附錄,print(board)將返回對象的相當不愉快的看法,我建議超載__str____repr__獲得創建的對象的一個​​更好的視野:

class Slot: 
    def __init__(self, address , card, stat): 
     self.address = address 
     self.card = card 
     self.stat = stat 

    def __str__(self): 
     return "Slot: ({0}, {1}, {2})".format(self.address, self.card, self.stat) 

    def __repr__(self): 
     return str(self) 

現在print(board)打印:

print(board) 
[Slot: (1A, 0, 0), Slot: (1B, 0, 0),..., Slot: (12H, 0, 0), Slot: (12I, 0, 0)] 
0

您正將一個元組傳遞給構造函數。如果您刪除括號,您的代碼是黃金。

From: 
board.append(Slot ((str(i)+j,'0', 0))) 
To: 
board.append(Slot(str(i)+j,'0', 0))