在Jython中使用python文件是否需要python类?

2024-09-28 21:51:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图实现我用Java编写的Python代码,我想使用Jython。有很多网站提供了关于如何构建Jython对象工厂的信息,但是所有的示例都使用Python类。例如:

http://jythonpodcast.hostjava.net/jythonbook/en/1.0/JythonAndJavaIntegration.html#using-jython-within-java-applications

但是,我没有在代码中使用类。也就是说,我有很多文件,每个文件都包含几个函数定义,但没有类。因此,我想知道是否有人可以为我指出一个资源,或者提供一些信息,说明是否可以使用Jython来弥合Java和Python之间的鸿沟,而不需要类。在

谢谢。在


Tags: 文件对象代码信息http示例net网站
1条回答
网友
1楼 · 发布于 2024-09-28 21:51:37

如果我正确地理解了您的要求(我认为您希望从Java代码中调用Python函数),我认为这是可能的。在

这是完全未经测试的,而且有点推测性,但看起来Jython提供了一个Java对象模型,允许您做您想做的事情。这里需要理解的重要一点是,Python将函数存储为每个模块(Python文件)的字典属性。因此,在纯Python中,可以获得并使用函数os.path.join()执行以下操作:

import os
getattr(getattr(os, 'path'), 'join').__call__('.', 'directory')

虽然不是最具Python语法,但我认为它有助于阐明如何使用PyObject接口从Python模块加载invokeapython函数。在

要从Java实现这一点,似乎需要遵循类似于List 10-5in the section of the Jython book you linked to的模式。在第一个构造函数中,有一个示例说明如何导入Python类(也存储为Python模块的属性)。稍微修改一下,你会得到如下结果:

^{pr2}$

当然,您已经从上面的片段中看到了Java与动态语言相比的一些缺点。如果Python函数需要任何类型的参数,这一点尤其严重,因为任何Java对象都需要被封送到PyObjects中。同样,the listing mentioned above有几个使用java2py() method of the Py class将Java对象转换为Python对象的示例。类似地,如果Python函数返回某种结果,则可能需要使用^{} function on PyObject将其转换为Java对象。在

为了处理所有这些细节,可能值得您花时间为您需要从Java代码访问的Python模块构造一个Java adapter,类似于JythonObjectFactory提供将Java对象转换为Python对象的方法,在Python类上调用__init__()方法,并将结果返回为Java对象。在

希望这足以为你指明正确的方向。在

相关问题 更多 >