2016-09-28 52 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))