【问题标题】:Self-written python code in Android with Chaquopy使用 Chaquopy 在 Android 中自行编写的 Python 代码
【发布时间】:2018-07-02 10:30:04
【问题描述】:

我尝试在 Android 应用程序中使用原型 Python 代码,我发现 Chaquopy 作为一个可能的库。

文档有点稀疏,所以我想澄清一下:我可以用 Chaquopy 在 Android Java 代码中调用我自己编写的 python 方法(包括传递变量)吗?

如果是,是否有可能看到一个例子,这是如何工作的? 看到一个特别传递复杂对象(不仅是字符串)的例子,我真的很感激。

谢谢!

【问题讨论】:

    标签: java android python chaquopy


    【解决方案1】:

    是的,您可以像调用库代码一样调用自己的 Python 代码。只需将您的 Python 文件作为 the documentation describes 放在适当的目录中即可。

    我不确定您指的是哪种“复杂对象”,但这里有一些将各种类型的对象传递给文件 mod.py 中的 Python 函数 f 的示例:

    Python py = Python.getInstance();
    PyObject mod = py.getModule("mod");
    
    // If the function knows what methods and attributes to use, Java objects
    // can be passed directly.
    mod.callAttr("f", someJavaObject);
    
    // If the function expects an iterable, Java arrays can be passed directly.
    mod.callAttr("f", new String[] {"one", "two", "three"});
    
    // If the function expects a dict, it can be created as follows.
    PyObject builtins = py.getBuiltins();
    PyObject d = builtins.callAttr("dict");
    d.callAttr("__setitem__", 1, "a");
    d.callAttr("__setitem__", 2, "b");
    mod.callAttr("f", d);
    

    【讨论】:

    • 那么自己编写的 Python 和 Java 对象呢?例如我有一个 python 对象(python_object)并且想将它转换为一个 Java 对象......有没有办法例如用 python_object.toJava(Object.class) 来解决这个问题?
    • @Joker3139:toJava 的可能使用方式在the documentation 中列出。或者,如果您希望能够在不使用 Chaquopy Java API 的情况下从 Java 调用 Python 代码,您可以装饰您的 Python 类以生成 static proxy
    猜你喜欢
    • 2021-09-10
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-12
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    相关资源
    最近更新 更多