pyo3 0.18.3

Bindings to Python interpreter
Documentation
use pyo3::prelude::*;

#[pyclass]
struct TestClass {
    num: u32,
}

#[pymethods]
impl TestClass {
    #[pyo3(name = "num")]
    #[getter(number)]
    fn get_num(&self) -> u32 { self.num }
}

#[pymethods]
impl TestClass {
    #[pyo3(name = "foo")]
    #[pyo3(name = "bar")]
    fn qux(&self) -> u32 { self.num }
}

#[pymethods]
impl TestClass {
    #[pyo3(name = "makenew")]
    #[new]
    fn new(&self) -> Self { Self { num: 0 } }
}

fn main() {}