提问人:wfjohns1 提问时间:7/15/2023 更新时间:7/16/2023 访问量:100
如何使用 maturin 创建的 Pickle / deepcopy Python 类?
How to Pickle / deepcopy Python class created with maturin?
问:
我一直致力于使用 PyO3 和 Maturin 将 rust 代码集成到 python 中。我已经成功地编写了我的 Rust 类并让大部分功能正常工作,但是我无法成功地深度复制该对象。我尝试了使用包装类和自定义 deepcopy 和 getattr/setattr 的解决方法,但收效甚微,因为 rust 函数似乎不可腌制。Rust 类包含在标准 #[pymodule] 中,并标记为标准 #[pyclass]。以前有没有人遇到过这个问题,有什么办法可以解决吗?或者我应该避免在我的 python 代码中进行深度复制。
答:
1赞
Chayim Friedman
7/16/2023
#1
您需要定义一个方法,例如:__deepcopy__()
fn __deepcopy__(&self, _memo: &PyDict) -> Self {
self.clone()
}
酸洗更复杂,但参见 PyO3 问题 #100。
评论