Python类方法应用:滑动谜题类生成二维数字列表需求问询
实现SlidingPuzzle类生成指定二维数字列表
嘿,这事儿不难,我帮你写好了符合要求的代码,直接就能用:
class SlidingPuzzle: def __init__(self, rows, cols): # 用私有实例变量存储二维列表 self.__board = [] for row in range(rows): # 计算当前行的起始数字 start_num = row * cols # 生成当前行的连续数字列表 current_row = list(range(start_num, start_num + cols)) self.__board.append(current_row) def get_board(self): # 返回私有列表的副本,避免外部直接修改内部数据 return [row.copy() for row in self.__board] # 测试示例 board = SlidingPuzzle(3, 4) print(board.get_board()) # 输出: [[0,1,2,3],[4,5,6,7],[8,9,10,11]]
关键点说明:
- 私有实例变量:用
self.__board存储二维列表,双下划线开头是Python的私有变量命名规范,能有效防止外部代码直接修改内部数据,保证类的封装性。 - 二维列表生成逻辑:每一行的起始数字是
行号 × 列数,比如第0行(第一行)起始为0×4=0,第1行起始为1×4=4,以此类推。再通过range()快速生成该行的连续数字,转成列表后添加到私有变量中。 - 安全获取数据:我特意加了
get_board()方法,返回的是原列表的深副本(每行单独复制),这样外部拿到的列表不会影响类内部的私有变量,避免意外修改破坏数据结构。
如果你非要直接访问内部私有变量(不推荐这么做,会破坏封装),Python也提供了变通方式:board._SlidingPuzzle__board,但还是建议用get_board()方法来获取数据更规范。
内容的提问来源于stack exchange,提问作者Aron Tesfay
相关产品推荐
相关产品推荐

