Сообщение = объект 'SodokuGame' не может быть подписан
Source = C: \ Users \ PC \ Desktop \ python \ Soduku \ Soduku \ Soduku.py
StackTrace: File "C : \ Users \ PC \ Desktop \ python \ Soduku \ Soduku \ Soduku.py ", строка 31, в fillArray, если currentArray [x] [y] .value == 0:
Файл" C: \ Users \ PC \ Desktop \ python \ Soduku \ Soduku \ Soduku.py ", строка 110, в init game.fillArray (game.matrix, 0, 0, game.newPool) файл" C : \ Users \ PC \ Desktop \ python \ Soduku \ Soduku \ Soduku.py ", строка 113, в Run ()
Я пробовал собственный проект и столкнулся с проблемой. Для начала у меня есть класс сотовой связи. Моя цель - проверить данные в Cell
и запустить код в зависимости от результатов, но во время выполнения я столкнулся с ошибкой, приведенной выше.
class Cell:
value = 0
def __getitem__(self):
return self.value
def __setitem__(newVal, self):
self.value = newVal
Так я определил и попытался добавить свой список
class SodokuGame:
matrix = []
for i in range(9):
arr = []
for j in range(9):
arr.append(Cell())
matrix.append(arr)
def fillArray(currentArray, x, y, pool, self):
if currentArray[x][y].value == 0:
print("fillArray loop") #unimportant context code from here on
poolNum = randint(0, pool.length)
if testNumber(pool[poolNum]):
currentArray[x][y]= pool.pop(pool[poolNum])
print(poolNum)
Мое первое предположение состояло в том, что массив был заполнен неправильно, чтобы не выполнить оператор if, но это не проблема. Я полагаю, что проблема во время
if currentArray[x][y].value == 0:
каким-то образом, даже когда я инстанцировал все узлы в (x, y), он все еще дает мне ошибку, как будто я сравниваю объект SodukuGame
с 0 .
Как это называется изначально:
class Run:
def __init__(self):
print("Run")
game = SodokuGame()
game.printGrid()
game.fillArray(game.matrix, 0, 0, game.newPool)
game.printGrid()
Run()
Примечания: я не думаю, что это имеет отношение к вопросу, но цель этой функции - проверить, пуста ли текущая ячейка ( = 0), а если нет, он попытается заполнить ячейку и рекурсивно запустить функцию, снова перемещаясь по одной ячейке, пока структура не заполнится.
Я пытался реализовать методы в классе Cell
, чтобы Обойти это, включая добавление функции __getitem__
, встроенной функции getInfo
и даже пытаться использовать логическую функцию isZero
, но все это приводит к одной и той же ошибке. Это не для домашней работы.