gpt4 book ai didi

方法名称的 Java 和 Jython 集成问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:59 25 4
gpt4 key购买 nike

我正在按照 Jython and Java Integration 中的说明进行操作.

这个想法很简单;制作Java接口(interface),并匹配python类。问题是,使用接口(interface)函数 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 接口(interface)。

public interface ArithType {

public void setX(int x); // <-- Error
public void setYa(int x);
public int getXa();
public int getYa();
public int add();
}

这是部分 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()会导致执行出错?

最佳答案

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

关于方法名称的 Java 和 Jython 集成问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com