【发布时间】:2019-05-30 23:07:18
【问题描述】:
使用 chaquopy for android 时,从 java 调用模块不会运行 __init__ 方法。
PyObject utilModule = py.getModule("utils.Utils").get("Utils");
在没有构造函数的情况下创建对 python 的对象引用。如果没有额外的“init”函数并在创建后调用它,有什么方法可以做到这一点?
【问题讨论】:
使用 chaquopy for android 时,从 java 调用模块不会运行 __init__ 方法。
PyObject utilModule = py.getModule("utils.Utils").get("Utils");
在没有构造函数的情况下创建对 python 的对象引用。如果没有额外的“init”函数并在创建后调用它,有什么方法可以做到这一点?
【问题讨论】:
假设utils.Utils 是一个模块,Utils 是该模块中的一个类,那么您的代码只是获得对该类的引用。如果您想实际实例化该类,您可以这样做:
PyObject utilObj = py.getModule("utils.Utils").callAttr("Utils");
或者这个:
PyObject utilClass = py.getModule("utils.Utils").get("Utils");
PyObject utilObj = utilClass.call();
如果要传递构造函数参数,只需将它们添加到callAttr或call的参数列表末尾即可。
参见the documentation 中的ZipFile 示例。
【讨论】: