Я пытаюсь вызвать метод Python из класса Java.Имя метода - toEvaluate(Expression)
, которое находится в evaluator.py
.Этот метод возвращает логическое значение и принимает строку в качестве входного параметра.Кроме того, этот метод toEvaluate(Expression)
не является методом класса.(Я нашел этот код в Интернете.)
Однако есть два основных различия между этим кодом и моим:
run
- это метод класса и toEvaluate(Expression)
не
run
не имеет параметров и toEvaluate(Expression)
получает выражение в качестве входных данных.
Может кто-нибудь предложить какой-нибудь похожий кодрешить мою проблему?
public class InterpreterExample{
PythonInterpreter interpreter = null;
public InterpreterExample(){
PythonInterpreter.initialize(System.getProperties(),
System.getProperties(), new String[0]);
this.interpreter = new PythonInterpreter();
}
void execfile( final String fileName ){
this.interpreter.execfile(fileName);
}
PyInstance createClass( final String className, final String opts ){
return (PyInstance) this.interpreter.eval(className + "(" + opts + ")");
}
public static void main( String gargs[] ){
InterpreterExample ie = new InterpreterExample();
ie.execfile("hello.py");
PyInstance hello = ie.createClass("Hello", "None");
hello.invoke("run");
}
}
Код Python:
class Hello:
__gui = None
def __init__(self, gui):
self.__gui = gui
def run(self):
print 'Hello world!'
Это код для toEvaluate
, который вызывает синтаксический анализатор и получает результат выражения postfix.
def toEvaluate(expression):
a = []
global input
input = expression+"$"
infixExp()
for i in infixexp:
a.append(i)
exp = parser.infixtopostfix(a)
return parser.evalExp(exp)