【问题标题】:jpype accessing java mehtod/variable whose name is reserved name in pythonjpype访问名称为python中保留名称的java mehtod/变量
【发布时间】:2016-12-24 18:31:45
【问题描述】:

知道如何做到这一点吗?即,如果我们在 java 中定义了一个变量,如下所示

public Class Foo { String pass = "foo"; }

由于 pass 是保留关键字,我如何通过 jpype 访问它?我试过了 getattr(Jpype.JClass(Foo)(), "pass")但是找不到名为pass的属性

【问题讨论】:

    标签: java python type-conversion reserved-words jpype


    【解决方案1】:

    发现 jpype 在其源代码中的这些方法/字段的末尾附加了一个"_"。所以你可以通过 Jpype.JClass("Foo").pass_ 来访问它_

    希望它记录在某个地方

    【讨论】:

    • stackoverflow 过滤下划线,所以 jpype 在末尾附加下划线以防止名称与 python 关键字冲突
    【解决方案2】:

    不幸的是,无法访问与 python 关键字冲突的字段或方法

    【讨论】:

    • 嗯,这太糟糕了。希望看看是否有办法将名称作为字符串直接传递给 jvm 以调用 java 方法/字段。
    • 根据官方文档linkKnown Bugs/Limitations 包外的Java类(在包中)不能被导入。无法访问与 python 关键字冲突的字段或方法。由于缺乏 JVM 支持,您无法关闭 JVM 然后重新启动它。一些方法依赖于“当前”类/调用者。由于直接来自 python 代码的调用没有当前类,因此这些方法不起作用。用户手册列出了所有已知的类似方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 2021-05-22
    相关资源
    最近更新 更多