我正在尝试自动创建以下列表:
[Slot('1A', '0', 0), Slot('2A', '0', 0),
Slot('1B', '0', 0], Slot ('2B,'0', 0), ....]
将slot定义为:
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 :(得分: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)]
答案 1 :(得分:0)
您正在将单个元组传递给构造函数。如果删除括号,则代码为黄金。
From:
board.append(Slot ((str(i)+j,'0', 0)))
To:
board.append(Slot(str(i)+j,'0', 0))