【发布时间】:2015-01-14 20:04:11
【问题描述】:
我为使用列表列表的 connect 4 游戏创建了一个 Board 类。我想让对象支持板的行和列的索引:
class Test:
def __init__(self, cols, rows):
self.cols = cols
self.rows = rows
self.data = [[' '] * cols for row in range(rows)]
def __iter__(self):
yield from self.data
def __getitem__(self, row):
pass
# what should this be?
我知道我需要定义__getitem__,但是这个方法应该是什么来允许像b[1][1] 这样的语法?我查看了some past questions,但似乎找不到我正在寻找的答案。
编辑:也许以下是正确的做事方式?
def __getitem__(self, row):
return self.data[row]
【问题讨论】:
-
b[1][1]是两个__getitem__调用,一个用于b[1],另一个调用__getitem__的结果。您的列表列表无法控制它们的作用。最简单的事情是让你的__getitem__接受一个元组,这样你就可以做b[1, 1]。
标签: python