Jeśli mam obiekty a
i b
i oba obiekty odniesienia obj
, co się stanie, gdy zbieram, a następnie odtwarzam obiekty? Czy marynowane dane "będą wiedzieć", że oba odnoszą się do tego samego obiektu i odpowiednio je przywracają, czy też dwa z nich uzyskają dwa różne obiekty — i początkowo równe —?Canlele obsługują wiele odwołań do obiektów
Odpowiedz
Tak, obiekty udostępnione zostaną tylko raz zserializowane (protokół pikla może nawet obsługiwać odwołania kołowe).
Moduł
pickle
śledzi obiekty to już odcinkach, tak że późniejsze odwołania do tego samego obiektu nie będzie odcinkach ponownie.marshal
nie robi tego.Ma to wpływ zarówno na obiekty rekurencyjne, jak i na udostępnianie obiektów. Obiekty rekurencyjne są obiektami, które zawierają odniesienia do samych siebie. Nie są one obsługiwane przez
marshal
, a w rzeczywistości próba utworzenia kolumny obiektów rekursywnych spowoduje awarię interpretera języka Python. Udostępnianie obiektów dzieje się, gdy istnieje wiele odniesień do tego samego obiektu w różnych miejscach hierarchii obiektów.pickle
przechowuje takie obiekty tylko raz i zapewnia, że wszystkie inne odniesienia wskazują na kopię główną. Obiekty współużytkowane pozostają udostępnione, co może być bardzo ważne dla obiektów zmiennych.
Jak zaznacza @aix, pickle
rozumie wiele odniesień do tego samego obiektu, ale tylko w ramach pojedynczego piklowania. Oznacza to, że pikle zawsze ogrywają pojedynczy przedmiot. Jeśli ten obiekt zawiera odniesienia wewnątrz niego, odniesienia te zostaną poprawnie udostępnione w niezadrukowanym obiekcie.
Ale jeśli dwa razy wywołasz pikle, aby uzyskać dwa obiekty, współdzielone odniesienia między obiektami nie będą poprawnie zachowywane. Obiekt będzie teraz istnieć dwa razy.
- 1. Embedded Mono: Przechowywanie odwołań do obiektów C# w C++
- 2. Znajdowanie wszystkich odwołań do Eclipse
- 3. Android - przechowywanie odwołań do ApplicationContext
- 4. Wiele odwołań schematów w pojedynczej macierzy schematów - mangusta
- 5. Kiedy używać słowa kluczowego __block do odwołań do obiektów z ARC
- 6. Usuń wiele obiektów w django
- 7. libgdx wiele obiektów wykonawcze InputProcessor
- 8. Kombinacja/łańcuch Wiele obiektów jQuery
- 9. Czy wiele odwołań before_action wywołuje zły styl kodu?
- 10. C# Ranking obiektów, wiele kryteriów
- 11. Wiele obiektów EditText w AlertDialog
- 12. Dziedzina wolno aktualizuje wiele obiektów
- 13. Nodejs: Jak eksportować wiele obiektów?
- 14. Ruby string sub bez odwołań do regex
- 15. Sprawdzone metody odwołań do JavaScriptu IntelliSense
- 16. Czy można uzyskać liczbę odwołań do obiektu?
- 17. Uzyskiwanie hierarchii odwołań do ładowania klas Java
- 18. Utrata odwołań do przeniesieniaDelegate przed prezentacją presetentation
- 19. samodzielna definicja struktury odwołań?
- 20. Jak utworzyć wiele obiektów w tle?
- 21. Interfejsy bez liczenia odwołań
- 22. Tryb odwołań offline
- 23. „Tell, nie pytaj” na wiele kategorii obiektów
- 24. Odwzorowywanie ciągów na wiele typów obiektów Json?
- 25. Subskrybuj wiele obiektów Observables w Angular 2
- 26. Wiele zestawów obiektów tego samego typu
- 27. Inicjowanie odwołań w C++
- 28. Dołączanie obiektów do istniejących obiektów
- 29. Narzędzie do mapowania obiektów do obiektów
- 30. wykreślając wiele obiektów Xts w jednym oknie
To jest fajne. :RE –