Python と C# の両方に変換するクラスを作成しています。私のコードは素敵な「glm」ライブラリを使用しています。Glm は、次のような便利なデータ型を提供しますVec3
。
Vec3
私のクラスの Python および C# ユーザーに見えるようにすることはできますか? Vec3
つまり、データ型を使用してパブリック メソッドを公開できますか?
Vec3
以下は、パブリック関数が型を使用するクラスを含むHaxeコードのサンプルです。
// 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
分かりにくい名前と適切なコンストラクターの両方が表示されません。
何かアドバイス?ありがとう。