w odpowiedzi na Python pickle: dealing with updated class definitions, autor pakietu dill
pisze.Jak używać kopru do serializacji definicji klasy?
„Ok, dodałem tę funkcję do koperku w najnowszej wersji na github realizowane przy znacznie mniejszym oszustwa niż myślałem ... po prostu serializuje definicję klasy z ogórkiem i voila. "
Po zainstalowaniu dill
i majstrowaniu przy nim, nie jest dla mnie oczywiste, jak faktycznie korzystać z tej funkcji w dill
. Czy ktoś może podać wyraźny przykład? Chciałbym wybrać instancję klasy, a także serializować definicję klasy.
(Jestem nowy dla Pythona i ja ta funkcjonalność wydaje się niezwykle ważna, ponieważ od kiedy wytrawi się obiekt, byłoby wspaniale, aby uzyskać jak najbliżej gwarancji, że można spojrzeć na obiekt (może być wynikiem symulacja) w przyszłości po zmianie definicji klasy i nie śledziłeś wszystkich zmian w łatwo dostępny sposób).
Jeśli chodzi o twój pierwszy blok kodu, uruchamiam go i wysadza się dokładnie tak, jak "pikle": AttributeError: Obiekt "Foo" nie ma atrybutu "y". circa line 25. Szkoda, ponieważ brzmiało jak instancja magii, a przechowywanie obiektów z koperkiem w bazie danych byłoby łatwiejsze do utrzymania. Jest więc ogromny przypadek użycia. Dill 0.2.7.1, domyślne ustawienia kopru (byref False). Mam nadzieję, że to błąd operatora, ale cięcie i wklejanie jest solidnie w moim zestawie umiejętności. – piccolbo
Błąd jest specyficzny dla ipython. Wielkie westchnienie ulgi, ale wciąż zagadkowe ... zbada i otworzy bilet – piccolbo
@piccolbo: Weird. Mogę powtórzyć zachowanie w 'ipython' - więc muszą być mucking z czymś nieoczekiwanym. Wydaje się, że to nowe zachowanie. Hmm. Widziałem twój bilet, dzięki. –