You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python是否支持编写在实例变量上调用的var.method()形式的实例方法?

Python完全支持你想要的这种调用形式,实现逻辑如下:

核心思路是把原本存储为普通列表的数独主网格、标注网格,都封装为自定义的网格类实例,把get_line这类通用的网格操作方法都放到这个自定义类中即可。

代码实现示例

  1. 首先定义通用的网格类:
class SudokuGrid:
    def __init__(self, init_data=None):
        # 存储81个元素的网格数据,默认初始化为全0
        self.data = init_data if init_data is not None else [0]*81

    def get_line(self, line):
        if 0 < line < 10:
            return self.data[9*(line-1):9*line]
        return None
    
    # 其他通用网格操作(比如获取列、获取宫、修改单元格等)都可以放在这里
  1. 调整你原来的Sudoku类,将两个网格都改为SudokuGrid的实例:
class Sudoku:
    def __init__(self, main_grid_data):
        # 主网格使用传入的初始数据
        self.sudoku = SudokuGrid(main_grid_data)
        # 标注网格初始化为空
        self.annotations = SudokuGrid()
  1. 之后就可以用你想要的形式调用:
# 获取数独主网格的第3行
self.sudoku.get_line(3)
# 获取标注网格的第5行
self.annotations.get_line(5)

这种实现方式的可扩展性很强,后续如果需要新增其他网格通用操作,只要在SudokuGrid类中新增方法,两个网格实例就都可以直接复用,不需要重复编写逻辑。

内容的提问来源于stack exchange,提问作者federico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:57:03