Почему я не могу получить доступ к себе при создании списка в pdb?
У меня сейчас pdb
импортировано в calibrate
функция в большом классе Python под названием Machine
, В другом файле я создаю экземпляр этого класса и запускаю calibrate
, Я пытаюсь получить доступ self.r_error
это словарь, который указывает на функцию, и он определенно существует и обычно распознается оболочкой, но по какой-то причине я не могу перебрать его в списке:
(Pdb) self
<direct_simulation.Machine object at 0x033D7110>
(Pdb) self.r_error["xRx"](5)
1.9352496986596831e-10
(Pdb) y2 = [self.r_error["xRx"](i) for i in x]
*** NameError: name 'self' is not defined
В чем дело?
Вот некоторые части кода, которые могут иметь или не иметь отношение к делу:
direct_simulation.py:
from collections import defaultdict
import numpy as np
class Machine(object):
...
def _init_error(self):
get5rands = lambda: [np.random.normal(0,1) for _ in range(5)]
def rot_error_curve(a,b,c,d,e):
def curve(x):
...
(build a curve over the real numbers with a,b,c,d, and e)
...
return curve
self.r_error = defaultdict(lambda: rot_error_curve(*get5rands()),{})
...
def calibrate(self):
...
(things happen that create self.r_error["xRx"])
...
import pdb;pdb.set_trace()
dsim_test.py:
import direct_simulation as ds
...
def do_cal():
global mm
mm = ds.Machine()
mm.calibrate()
...
if __name__ == "__main__":
do_cal()
А потом в скорлупе я побежал python3 -i dsim_test.py
, Там не было никаких ошибок, но self
остается неопределенным точно, когда он находится в списке.