【发布时间】:2020-05-15 13:22:34
【问题描述】:
我已经开始学习 python,目前正在制作一个简单的数独游戏。
我有 2 个模块 sudoku.py 和 sudoku_GUI.py
sudoku.py 包含一个类 - Board,其目的是根据输入来解决游戏。
solve方法,为了生成解决方案,需要调用其他方法:
def solve(self):
empty_fields = self.find_empty()
if empty_fields == []:
return True
self.init_rows_columns_squares()
row, column = empty_fields[0]
square = 3 * (row//3) + column//3
valid_numbers = list(set(Board.number_arr) - (set(self.rows[row] + self.columns[column] + self.squares[square])))
valid_numbers.sort()
for i in valid_numbers:
if not self.is_valid(empty_fields[0], i):
return False
self.insert_number(empty_fields[0], i)
if self.solve():
return True
self.insert_number(empty_fields[0], 0)
return False
当它被自己的模块调用时,它工作得很好。 但是,当我尝试从 Sudoku_GUI 调用它时:
import sudoku
def solve_board(self, board):
board.solve()
board_1 = sudoku.Board(sudoku.board)
solve_board(self, board_1)
它不起作用,solve 方法被调用,它不会像在它自己的模块中那样调用其他方法。 显然,我可以在第一个模块中解决它,然后只导入已解决的板,但由于我正在学习,我想知道为什么会发生这种情况。
如果有人可以向我解释这一点,我将非常感激。谢谢!
【问题讨论】:
-
你看到的错误是什么?
-
没有错误,它运行,只是不会调用 self.init_rows_columns_squares() 和其他我通过在每个方法中放置 print("method_name") 来测试它,它只是打印 "solve"
-
将整个代码粘贴到paste.ubuntu.com 并在此处发送短链接
-
好的,会的,请稍等
-
如果所有内容都在一个文件中,它是否可以正常工作?
标签: python class methods module