假设我在Python中有以下类:
class TestPy:
def __init__(self):
pass
def f(self):
return("Hello World")
我想从Haxe中调用函数TestPy.f
。然后我可以通过
extern class TestPy {
public function new():Void;
public function f():String;
}
然后使用此声明来调用此函数
class Test {
public static function main():Void {
var py:TestPy = new TestPy();
trace(py.f());
}
}
这会编译,但生成的代码如下所示:
# Generated by Haxe 3.4.7
# coding: utf-8
class Text:
__slots__ = ()
@staticmethod
def main():
py = TestPy()
print(str(py.f()))
Text.main()
无法正常工作,因为带有TestPy
类的模块永远不会在代码中导入:
NameError:name' TestPy'未定义
所以我的问题是我如何建议Haxe在生成的代码中添加一个import语句(例如from testmodule import TestPy
)?
答案 0 :(得分:3)
只需向您的extern添加@:pythonImport
元数据即可。
所以,像:
@:pythonImport('testmodule', 'TestPy')
extern class TestPy {...
免责声明:尚未对此进行测试,因此可能不是完全正确的答案,但元数据为documented in the manual。