8

我知道 jython 允许我们从任何 java 的类文件中调用 java 方法,就好像它们是为 python 编写的一样,但是反过来可能吗???

我已经有很多用 python 编写的算法,它们与 python 和 jython 配合得很好,但是它们缺乏适当的 GUI。我打算将 GUI 与 java 一起带来并保持 python 库完整。我无法用 jython 或 python 编写好的 GUI,也不能用 python 编写好的算法。所以我找到的解决方案是合并java的GUI和python的库。这可能吗。我可以从 java 调用 python 的库吗?

4

1 回答 1

22

是的,这是可以做到的。通常这将通过创建一个PythonInterpreter 对象然后使用它调用 python 类来完成。

考虑以下示例:

爪哇:

import org.python.core.PyInstance;  
import org.python.util.PythonInterpreter;  


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!'
于 2013-05-09T11:53:04.490 回答