我正在写一个连接4的游戏,有一个网格类,类似于游戏所使用的二维网格。我的网格类的底层数据结构是一个实例变量self.grid
——一个二维列表。你知道吗
我重写了__iter__
方法,如下所示:
def __iter__(self):
for row in range(self.numRows):
for col in range(self.numCols):
yield self.grid[row][col]
我可以称之为:
for cell in grid:
# do something with yielded cell
在某些情况下,我需要迭代指定的行或列。而不是写作
col = 0
for row in range(grid.numRows):
# do something with grid.grid[row][col]
有没有什么通俗易懂的方法来定义第二个和第三个__iter__
方法:
def __iter__(self, col)
for row in range(self.numRows):
yeild self.grid[row][col]
我们称之为:
for row in grid(col=0):
# do something with the yielded cell
然后是相同的,但是有一个指定的row
?你知道吗
当然可以,不需要添加特殊方法。只需添加迭代器,python 3代码如下:
以及如何使用它的简单示例
你当然可以有很多这样的方法。您不能全部调用它们
__iter__()
,因为Python不支持方法重载。例如,您可以这样做:然后你会写下
相关问题 更多 >
编程相关推荐