2013-03-25 2 views
3

Я пишу возвышенный редактор 2 плагина и хотел бы, чтобы он помнил переменную в течение всего сеанса. Я не хочу, чтобы он сохранял переменную в виде файла (это пароль), но хотел бы иметь возможность запускать команду повторно, а переменная должна быть доступна.Sublime Editor Plugin запомнить переменную

Я хочу, чтобы мой плагин что-то вроде этого работать ...

import commands, subprocess 

class MyCommand(sublime_plugin.TextCommand): 
    def run(self, edit, command = "ls"): 
    try: 
     thevariable 
    except NameError: 
     # should run the first time only 
     thevariable = "A VALUE" 
    else: 
     # should run subsequent times 
     print thevariable 

ответ

4

Одним из способов достижения этой цели было бы сделать это глобальная переменная. Это позволит вам получить доступ к этой переменной из любой функции. Here - это вопрос стека, который нужно рассмотреть.

Другой вариант - добавить его в экземпляр класса. Это обычно делается в методе __init__() класса. Этот метод запускается, как только объект класса создается. Для получения дополнительной информации о self и __init__() обратитесь к this stack discussion. Вот пример.

class MyCommand(sublime_plugin.TextCommand): 
    def __init__(self, view): 
     self.view = view # EDIT 
     self.thevariable = 'YOUR VALUE' 

Это позволит вам получить доступ к этой переменной из объекта класса после его создания. Что-то вроде этого MyCommandObject.thevariable. Эти типы переменных будут сохраняться до тех пор, пока окно, в котором был вызван метод, не будет закрыто.

+0

Мне нравится идея, кажется, именно то, что я хочу, но я получаю сообщение об ошибке «AttributeError: Объект ConsoleLogCommand» не имеет атрибута «view» –

+0

Я только что сделал редактирование, которое должно исправить эту ошибку. –

+0

Да, это прекрасно работает, спасибо! –