cast object of python to java object - problem
Sikora, Stanislav
stanislav.sikora at autel.cz
Fri Aug 25 08:56:21 EDT 2000
I have problem with cast object of Python to Java object.
PySSc -> PythonScriptClass
Please help me.
Stanley
Class in Python (generated by
PythonScriptClass.java): ---------------------------------------------------
----------------------------------
import PythonScriptClass
class PySSc(PythonScriptClass):
def get(self,variables):
a=variable(0)
b=variable(1)
c = a + b
return c
rr=PySSc()
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--------------
Class PythonScriptClass.java in
Java:-----------------------------------------------------------------------
----------------------------------------
import java.util.*;
import org.python.util.PythonInterpreter;
import org.python.core.*;
import java.lang.reflect.*;
public abstract class PythonScriptClass {
public static PythonScriptClass createPythonScriptClass(String var[],String
script,String name) {
StringTokenizer st=new StringTokenizer(script,"\n\r");
StringBuffer scr=new StringBuffer(
"import PythonScriptClass\n");
scr.append("class PySS");
scr.append(name);
scr.append("(PythonScriptClass):\n def get(self,variables):\n");
for (int i=0;i<var.length;i++) {
scr.append(" ");
scr.append(var[i]);
scr.append("=variable(");
scr.append(i);
scr.append(")\n");
}
while (st.hasMoreTokens()) {
scr.append(" ");
scr.append(st.nextToken());
scr.append("\n");
}
scr.append(" return ");
scr.append(name);
scr.append("\nrr=PySS");
scr.append(name);
scr.append("()\n\n");
String scriptString=scr.toString();
System.out.println("------------------------\n"+scriptString+"--------------
----------\n");
PythonInterpreter interp = new PythonInterpreter();
interp.exec("import sys");
interp.exec(scriptString);
Object pso = interp.get("rr",Object.class);
System.out.println("pso class: "+pso.getClass().getName());
System.out.println("pso superclass:
"+(pso.getClass()).getSuperclass().getName());
Method met[]=pso.getClass().getMethods();
for(int i=0;i<met.length;i++)
System.out.println("Met: "+met[i]);
PythonScriptClass psc = null;
// if(pso instanceof PythonScriptClass)
psc =(PythonScriptClass) pso; //
<-------------------------------------------------------------------------EX
CEPTION
System.out.println(" psc class: "+psc.getClass().getName());
System.out.println(" psc superclass:
"+(psc.getClass()).getSuperclass().getName());
return psc;
}
public double get(
double variable[]) {
return 0.0;
};
public static void main(String args[]) {
String names[]={"a","b"};
double variables[]={1.0,2.0};
String script="c = a + b";
PythonScriptClass
psc=PythonScriptClass.createPythonScriptClass(names,script,"c");
double c=psc.get(variables);
System.out.println("C = "+c);
}
}
----------------------------------------------------------------------------
----------------------------------------------------------------------------
------------
Exception i
runtime: -------------------------------------------------------------------
-------------------------------------------------------------------
Exception in thread "main" java.lang.ClassCastException:
org.python.proxies.PySSc$0
at
PythonScriptClass.createPythonScriptClass(PythonScriptClass.java:57)
at PythonScriptClass.main(PythonScriptClass.java:72)
----------------------------------------------------------------------------
----------------------------------------------------------------------------
------------
More information about the Python-list
mailing list