Python オブジェクトを錆に渡して、Python オブジェクトのフィールドを使用して操作を実行しようとしています。
パイソン:
class myclass(object):
def __init__(self):
self.a = 3
b = myclass()
print(b.a)
// 3
さび:
#[pyfn(m, "rust_obj")]
fn rust_obj_py(py: Python, x: PyObject) -> PyResult<PyObject> {
let y = x.clone_ref(py);
y.a += 2;
Ok(y)
}
Python から呼び出した場合の期待される結果は次のようになります。
c = rust_obj(b)
print(c.a)
// 5
代わりに、コンパイル時に Rust エラーが発生します。
error[E0609]: no field `a` on type `pyo3::PyObject`
--> src\lib.rs:926:5
|
926 | y.a += 2;
| ^ unknown field
オブジェクトのフィールドとメソッドを錆でリストし、フィールドを操作する方法はありますか?