Ich will es dem Benutzer erlauben meine Software mit hilfe von Skripts zu steuern. Dabei will ich aber nur, dass die Skripts auf ein einzige Variable zugreifen können. Ich habe das versucht so zu lösen:
Code: Alles auswählen
from twisted.internet import defer
class scriptEngine:
"""
The scripting engine. Communicates with the user scripts.
"""
__shared_state = {}
__loaded = 0
scriptPath = ""
callbackIndex={}
processQueue=[]
scriptnamespace={}
def __init__(self):
self.__dict__=self.__shared_state
if not self.__loaded:
self.scriptnamespace={'secs':self}
self.__loaded=1
def reloadScripts(self):
""" Reloads the user scripts """
self.callbackIndex={}
execfile(self.scriptPath,self.scriptnamespace)
def addCallback(self,agent,job,port=-1,processid=-1):
# Viele weitere Funktionen auf die der Benutzer zugreifen kann
z.B. So:
Code: Alles auswählen
print "Testskript 03"
var=-1
def pongCallback(data):
print var
var += 1
secs.addCallback(1,"CORE-PING").addCallback(pongCallback)
secs.addCallback(1,"CORE-PING").addCallback(pongCallback)
exceptions.UnboundLocalError: local variable 'var' referenced before assignment