How to use RUST two "nested" structs in Python

How to use RUST two "nested" structs in Python
PE
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 2 lata
  • Postów:45
0

Hi,I have this problem. I created two stuctures in RUST where one contains required fields and the other contains optional fields. The compilation went fine, in Python I imported the library but when I want to create an object in Python, that will contain optional fields I get an error.

Kopiuj
#[pyclass(name = "class_1")]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PyClassMandatory {
    #[pyo3(get, set)]
    field1: String,
    #[pyo3(get, set)]
    field2: String,
    #[pyo3(get, set)]
    py_class_non_mandatory: PyClassNonMandatory
}


#[pyclass(name = "class_1")]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct PyClassNonMandatory {
    #[pyo3(get, set)]
    field3: Option<String>,
    #[pyo3(get, set)]
    field4: Option<String>
}

impl Default for PyClassNonMandatory {
    fn default() -> PyClassNonMandatory {
        PyClassNonMandatory {
            field3: Default::default(),
            field4: Default::default()
        }
    }
}

#[pymethods]
impl PyClassMandatory {
    #[new]
    fn __new__(field1: String, field2: String) -> Self {
        PyClassMandatory {
        field1,
        field2,
        py_class_non_mandatory: Default::default()
    }
}
edytowany 1x, ostatnio: hauleth
hauleth
Please, format your code before posting.
CZ
To jest polskie forum, odpowiemy Ci jak zaczniesz pisać po polsku, ponieważ wszyscy wiedzą że umiesz w tym języku pisać. Tak więc przestań robić z siebie fancy bobka tylko napisz normalnie.
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 dni
  • Postów:1027
1

What kind of error?

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 4 godziny
5

@Pewex chyba przypadkowo włączył tłumacza, bo resztę postów ma po polsku :]


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
LukeJL
Może w ramach nauki i się ćwiczy w angielskim. Albo odwrotnie - może pisząc posty po polsku się ćwiczył w polskim?
Wibowit
jeśli uczy się polskiego to co najmniej od 12 lat: Czy getline wczyta int-a ? zgaduję, że napisał po angielsku, żeby wkleić do kilku miejsc w necie.
PE
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 2 lata
  • Postów:45
0
enedil napisał(a):

What kind of error?

In Python

Kopiuj
After library is loaded:
>>>> import test_lib

I've tried to create an object:
>>> test_object = test_lib.class_1(field1="aaa", field2= "bbb", field3="ccc")

And I got an error:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: class_1.__new__() got an unexpected keyword argument 'field3'
>>>
edytowany 1x, ostatnio: Riddle

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.