我正在写一个类,我将把它翻译成 Python 和 C#。我的代码使用了不错的“glm”库。glm 提供了有用的数据类型,例如:Vec3
.
我可以让Vec3
我班级的 Python 和 C# 用户看到吗?换句话说,我可以使用Vec3
数据类型公开公共方法吗?
这是一个示例 Haxe 代码,其中一个类的公共函数使用该Vec3
类型:
// Test execution:
// haxe -main TestGLM1 -lib glm --interp
// Translate into Python:
// haxe -main TestGLM1 -python TestGLM1.py -lib glm
// python3 TestGLM1.py
import glm.Vec3;
import glm.Quat;
import glm.Mat4;
class TestGLM1 {
public function new() {
}
static function main() {
// My test of the method taking 3D datatypes as input and output
var t: TestGLM1 = new TestGLM1() ;
var v1: Vec3 = new Vec3(1,2,3) ;
var v2: Vec3 = new Vec3(7,8,9) ;
t.testVecIO(v1, v2);
trace(v1, v2);
}
public function testVecIO(vec_in: Vec3 , vec_out: Vec3) {
vec_out.x = vec_in.x + vec_out.x;
vec_out.y = vec_in.y + vec_out.y;
vec_out.z = vec_in.z + vec_out.z;
}
}
我想写一个这样的 Python 测试:
from TestGLM1 import TestGLM1
from TestGLM1 import glm_Vec3
print("Python Test...")
t = TestGLM1()
v1 = glm_Vec3(1,2,3) # Vec3()
v2 = glm_Vec3(4,5,6) # Vec3()
t.testVecIO(v1, v2)
print(v1, v2)
print("Python done.")
但是,此测试失败:
ImportError:无法导入名称“glm_Vec3”
因为我能看到的唯一课程TestGLM1.py
是:
class glm_Vec3Base:
_hx_class_name = "glm.Vec3Base"
__slots__ = ("x", "y", "z")
_hx_fields = ["x", "y", "z"]
def __init__(self):
self.z = None
self.y = None
self.x = None
它既有不友好的名称,也没有显示正确的构造函数。
有什么建议吗?谢谢。