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