假设我在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()

这不起作用,因为withTestPy类的模块从未在代码中导入:
名称错误:未定义名称“TestPy”
所以我的问题是,我如何建议Haxe在生成的代码中添加一个import语句(例如from testmodule import TestPy)?

最佳答案

只需向外部添加一个@:pythonImport元数据。
所以,有点像:

@:pythonImport('testmodule', 'TestPy')
extern class TestPy {...

免责声明:没有测试过这个,所以这可能不是正确的答案,但是元数据是documented in the manual

关于python - 从Haxe内部调用外部Python类函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50009486/

10-12 20:03