|
From: Stefan R. <Ste...@gm...> - 2015-12-30 15:26:46
|
<html><head></head><body><div style="font-family: Verdana;font-size: 12.0px;"><div>
<div>Subodh,</div>
<div>let me state that I did not test your code for an exact solution.</div>
<div>However just by taking a look, it occurs to me that the main</div>
<div>method does never load your Python code. A call like</div>
<div>ie.execfile([fileWithYourPythonCode].py)</div>
<div>would be needed before the class can be created etc.</div>
<div>Also I don't think that "None" as a String is an appropriate argument</div>
<div>where a PyObject is expected. Use Py.None instead.</div>
<div> </div>
<div>That said, consider to coerce your Python class into a Java interface,</div>
<div>which would allow a smoother integration with Java code.</div>
<div> </div>
<div>Hope, this somewhat helps...</div>
<div> </div>
<div>-Stefan</div>
<div>
<div name="quote" style="margin:10px 5px 5px 10px; padding: 10px 0 10px 10px; border-left:2px solid #C3D9E5; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div style="margin:0 0 10px 0;"><b>Gesendet:</b> Dienstag, 29. Dezember 2015 um 23:11 Uhr<br/>
<b>Von:</b> "Subodh Garg-SSI" <sub...@ss...><br/>
<b>An:</b> "jyt...@li..." <jyt...@li...><br/>
<b>Betreff:</b> [Jython-users] How to call Python function that takes a parameter</div>
<div name="quoted-content"><!--p.MsoNormal, li.MsoNormal, div.MsoNormal {
margin: 0.0in;
font-size: 11.0pt;
font-family: Calibri , sans-serif;
}
a:link, span.MsoHyperlink {
color: blue;
text-decoration: underline;
}
a:visited, span.MsoHyperlinkFollowed {
color: purple;
text-decoration: underline;
}
span.EmailStyle17 {
font-family: Calibri , sans-serif;
color: windowtext;
}
*.MsoChpDefault {
font-family: Calibri , sans-serif;
}
div.WordSection1 {
page: WordSection1;
}
-->
<div>
<div class="WordSection1">
<p class="MsoNormal">Hi All,</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Here is the example Python code in hello.py and Java code. I am able to invoke run function of Python class Hello as given the code. I need help in calling “run2” function of Python in Java.</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Thanks,</p>
<p class="MsoNormal">Subodh</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">class Hello:</p>
<p class="MsoNormal"> __gui = None</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> def __init__(self, gui):</p>
<p class="MsoNormal"> self.__gui = gui</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> def run(self):</p>
<p class="MsoNormal"> print 'Hello world!'</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> def run2(myname):</p>
<p class="MsoNormal"> print myname</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">Here is my Java code:</p>
<p class="MsoNormal">import org.python.core.PyInstance;</p>
<p class="MsoNormal">import org.python.core.PyString;</p>
<p class="MsoNormal">import org.python.core.PyObject;</p>
<p class="MsoNormal">import org.python.util.PythonInterpreter;</p>
<p class="MsoNormal">import java.lang.*;</p>
<p class="MsoNormal">import java.util.*;</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal">public class InterpreterExample</p>
<p class="MsoNormal">{</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> PythonInterpreter interpreter = null;</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> public InterpreterExample()</p>
<p class="MsoNormal"> {</p>
<p class="MsoNormal"> PythonInterpreter.initialize(System.getProperties(),</p>
<p class="MsoNormal"> System.getProperties(), new String[0]);</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> this.interpreter = new PythonInterpreter();</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> void execfile( final String fileName )</p>
<p class="MsoNormal"> {</p>
<p class="MsoNormal"> this.interpreter.execfile(fileName);</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> PyInstance createClass( final String className, final String opts )</p>
<p class="MsoNormal"> {</p>
<p class="MsoNormal"> return (PyInstance) this.interpreter.eval(className + "(" + opts + ")");</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> public static void main( String gargs[] )</p>
<p class="MsoNormal"> {</p>
<p class="MsoNormal"> InterpreterExample ie = new InterpreterExample();</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> PyInstance hello = ie.createClass("Hello", "None");</p>
<p class="MsoNormal"> </p>
<p class="MsoNormal"> hello.invoke("run");</p>
<p class="MsoNormal"> }</p>
<p class="MsoNormal">}</p>
</div>
------------------------------------------------------------------------------ _______________________________________________ Jython-users mailing list Jyt...@li... <a href="https://lists.sourceforge.net/lists/listinfo/jython-users" target="_blank">https://lists.sourceforge.net/lists/listinfo/jython-users</a></div>
</div>
</div>
</div>
</div></div></body></html>
|