Я даже не уверен, что заголовок моего вопроса правильный, но я все равно уйду.Но я хотел бы извиниться, если окажется, что название не совсем правильное.Кроме того, я должен признать, что я не гуру в том, что касается python, поэтому, если мой вопрос глуп, просто посмейтесь!
Я определил класс python, который использует код.модуль переводчика.(В основном я пытаюсь написать примитивную консоль.) Я могу передать строки интерпретатору, и все работает нормально.Однако я хотел бы выполнить синтаксический анализ строк вне этого класса, поэтому я попытался передать строку, которую я прочитал, из командной строки моей функции синтаксического анализатора, которая, в свою очередь, возвращает строку.(Он расширяет исходную строку в допустимый оператор python.) Я беру эту строку и передаю ее интерпретатору.Это все еще работает отлично.Однако, когда возвращаемая строка содержит ссылку на функцию, определенную в моем исходном классе, она ломается, и python жалуется, что self.whthing не определен.Возможно, следующий фрагмент мог бы прояснить ситуацию
class myclass():
...
parsed_line = parser.parse_line('line to parse')
code.InteractiveInterpreter.runsource( parsed_line )
def self.do_something( self ):
print 'I have done something'
pass
, а моя внешняя функция
def parse_line( line ):
if 'line' = 'line to parse'
return 'self.do_something()'
Ну, это сломается.Если я изменю свой синтаксический анализатор как
def parse_line( line ):
return 'print 12'
, он будет работать нормально, и радостно печатает 12. На самом деле, ссылка на self.do_something не очень важна.Даже если бы я попытался выполнить простое задание, скажем, self.a, оно все равно сломалось бы.
Мой вопрос: как можно преодолеть проблему, описанную выше?Я действительно должен ссылаться на self.whither, потому что функция do_something работает с одним из членов класса в myclass.
Спасибо,
Золтан