3

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

分かりにくい名前と適切なコンストラクターの両方が表示されません。

何かアドバイス?ありがとう。

4

1 に答える 1