Вот простой код, иллюстрирующий суть проблемы:
class test:
def __init__(self):
self.var = 0
def set(self, val):
self.var = val
print eval('map(lambda x: self.var*x, [1,2,3,4,5])')
f = test()
f.set(10)
В нем говорится
NameError: global name 'self' is not defined
Я знаю, что многим людям не нравится eval, но в моем случае я должен использовать его, потому что он выполняет математическую формулу из строки, введенной пользователем во время выполнения программы. Любые предложения приветствуются! Спасибо заранее!