Как я могу пройти через код Python, чтобы найти, когда переменная изменена? - PullRequest
0 голосов
/ 16 декабря 2018

Я пишу программу на Python, которая определяет класс SpatialPooler.Объекты этого класса имеют внутреннюю логическую переменную self._learn и другую внутреннюю переменную self._data.Когда self._learn == False, self._data должен не быть изменен основным методом SpatialPooler.

У меня есть еще один файл python, который создает объект, создающий экземпляр этого класса, а затем запускает тестовый сценарий.При включенном обучении результат будет таким, как ожидалось.Тем не менее, когда обучение отключено, что-то идет не так, и self._data изменяется, но я не могу найти, где в коде это происходит.

Есть ли способ пройти по коду, чтобы найти, где эта переменнаямодифицируется?Кажется, что pdb может быть тем инструментом, который позволил бы мне сделать это, но мой код на самом деле не выдает никаких предупреждений или ошибок, и я не могу найти никаких инструкций о том, как мне найти функцию, которая модифицирует ненадлежащим образомпеременная self._data.

Будем весьма благодарны за любые предложения или советы.

1 Ответ

0 голосов
/ 17 декабря 2018

Немного сложно сказать, куда именно это поместить, но вы можете добавить оператор pdb где-нибудь в коде.

В частности, добавить import pdb; pdb.set_trace() где-то в коде (возможно, это основная функция, которую выупоминается), и когда программа попадет в эту строку, она перейдет в отладчик.Затем вы можете пошагово пройти код по мере его выполнения (введя n).Вы можете увидеть, что представляют собой значения переменных, просто набрав имя переменной (self._data, если вы находитесь в методе класса).

Ссылка на то, как используется pdb.

...