Get a pyclass
from a pyclass
with reference?
#2261
Replies: 1 comment 4 replies
-
#[pyclass]
struct Wallet {
pub cash: i64,
}
#[pymethods]
impl Wallet {
#[new]
fn new(cash: i64) -> Self {
Self { cash }
}
pub fn add_cash(&mut self, cash: i64) {
self.cash += cash;
}
}
#[pyclass]
struct Player {
pub name: String,
#[pyo3(get)]
pub wallet: Py<Wallet>,
}
#[pymethods]
impl Player {
#[new]
fn new(name: String, cash: i64, py: Python) -> Self {
Self {
name,
wallet: Py::new(py, Wallet { cash }).unwrap(),
}
}
} |
Beta Was this translation helpful? Give feedback.
4 replies
Answer selected by
sun-rs
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I have two
#[pyclass]
and I combine one into another one like below:What I want to do is create a instance of
Player
in Python and call methods ofWallet
like:But I found everytime use
player.wallet
, it would return a new clone for wallet with a new memory address(found by callid(wallet)
).And because
player.wallet
need to create new object, it takes more time.How to achieve
player.wallet.add_cash(10)
in Python like Rust did (call its inner instance rather than a clone) ?Beta Was this translation helpful? Give feedback.
All reactions