Java和Jython的集成问题与方法名有关

2024-10-01 22:27:44 发布

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

我按照Jython and Java Integration中的说明操作。在

想法很简单:制作Java接口,并匹配python类。 问题是使用接口函数setX()和setY(),我在执行文件时总是会遇到错误。我不得不将名称修改为setXvalue()或setYvalue()以避免错误。在

Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class    
org.python.core.PyTraceback
at org.python.core.PyException.tracebackHere(PyException.java:158)

at org.python.core.PyObject._jcall(PyObject.java:3587)
at org.python.proxies.Arith$Arith$0.setX(Unknown Source) <-- ERROR???
at Main.main(Main.java:14)

package org.jython.book.interfaces;

这是一个Java接口。在

^{pr2}$

这是部分python类。在

class Arith(ArithType):
    ''' Class to hold building objects '''

    def setX(self, x): # << Error
        self.x = x

您可以在此站点找到要测试的源代码- https://dl.dropboxusercontent.com/u/10773282/2013/Archive.zip

这怎么了?为什么方法名setX()或setY()会导致执行错误?在


Tags: orgcoreselfmain错误javaatclass
1条回答
网友
1楼 · 发布于 2024-10-01 22:27:44

在Jython中访问对象的属性时要小心;Jython使用隐式getter/setter,因此从self.x读取会调用self.getX()等等。将jython代码中所有出现的self.x更改为self._x(对y也是如此)使它工作(对我来说)。实际上,在Python中,将非公共成员命名为_...。在

相关问题 更多 >

    热门问题