2016-09-28 12 views
0

を作成:WindowsでのPython 3.5を使用して自動的に私は自動的に次のリストを作成しようとしているリスト

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) 

:としてスロットを定義することにより

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

を。なにが問題ですか?私はそれをどのようにすることができますか?ありがとう。

+0

だから間違っています:-)?出力とは何ですか?それは何ですか? – Kasramvd

+0

私はそこで 'TypeError'を編集したいと思っていますが、それは適切なアクションであるとはっきりとは分かりません。 –

+0

ジムの回答はとても役に立ちました。ありがとう。 – Yossi7

答えて

2

Slotにすべての引数を1つの括弧で囲んで、__init__に1つの引数を渡して、3つの引数を渡すようにしました(そしてそれには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

コンストラクタに1つのタプルを渡しています。かっこを削除すると、コードはゴールデンです。

From: 
board.append(Slot ((str(i)+j,'0', 0))) 
To: 
board.append(Slot(str(i)+j,'0', 0)) 
関連する問題