вызов метода Python с типом возврата из Java - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь вызвать метод Python из класса Java.Имя метода - toEvaluate(Expression), которое находится в evaluator.py.Этот метод возвращает логическое значение и принимает строку в качестве входного параметра.Кроме того, этот метод toEvaluate(Expression) не является методом класса.(Я нашел этот код в Интернете.)

Однако есть два основных различия между этим кодом и моим:

  1. run - это метод класса и toEvaluate(Expression)не

  2. 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...