У меня есть класс python, который я могу создать, а затем рассолить. Но тогда у меня есть второй класс, унаследовавший от первого, чьи экземпляры я не могу разгадать. Пикель дает мне ошибку «не может расчехлять экземплярный метод». Оба экземпляра имеют множество методов. Итак, есть ли у кого-нибудь предположение, почему первый класс будет правильно сортировать, но не второй? Я уверен, что вы захотите увидеть код, но он довольно длинный, и я действительно не знаю, какими могут быть «оскорбительные» части второго класса. Поэтому я не могу показать все это, и я действительно не знаю, какими могут быть соответствующие части.Когда маринование не удается рассортировать экземпляр?
ответ
Травление просто не рассолчает ваши классы, маринование работает только на данные, если вы попытаетесь разложить класс со встроенными методами, это просто не сработает. он выйдет из строя и сломан.
Источник: обучение питона Марк Лутц
Там довольно обширный список того, что может и не может быть маринованные здесь: https://github.com/uqfoundation/dill/blob/master/dill/_objects.py
В нем перечислены все объекты, через первые 15 или около участков в стандартная библиотека python, и хотя это еще не все, она также охватывает все объекты первичной и многих второстепенных значений в стандартной библиотеке.
Кроме того, если вы решите использовать dill
вместо pickle
, я собираюсь предположить, что вы, вероятно, не будет иметь вопрос травильного как dill
может в значительной степени сериализации ничего питона.
Более непосредственно обращаясь ваш вопрос ... pickle
соленья классы по ссылке, в то время как dill
маринады классы код или по ссылке, в зависимости от выбранных настроек (по умолчанию это замариновать код). Это может обойти проблемы «поиска» для ссылок на классы, которые имеет pickle
.
- 1. Невозможно рассортировать экземпляр класса Python
- 2. Почему не удается рассортировать список, являющийся атрибутом объекта?
- 3. Не удается создать экземпляр
- 4. pandas временные ряды и маринование
- 5. Невозможно рассортировать объекты scipy.spatial.KDTree
- 6. как рассортировать индивидуальный векторизатор?
- 7. Не удается удалить экземпляр объекта
- 8. Не удается сохранить экземпляр окна
- 9. Не удается создать экземпляр классаName.pageName
- 10. Не удается найти экземпляр объекта
- 11. Не удается создать экземпляр ActionListener
- 12. Не удается создать экземпляр ObjectInputStream
- 13. Не удается создать экземпляр класса
- 14. Как рассортировать цепочку обратного вызова
- 15. Невозможно рассортировать Scikit learn NearestNeighbor classifier - не может рассортировать объекты instancemethod
- 16. Попытка рассортировать список в python
- 17. Как «рассортировать» данные в пандах?
- 18. Не удается создать экземпляр справки об обслуживании
- 19. Не удается получить экземпляр унаследованного класса
- 20. Не удается удалить экземпляр сервера WebLogic
- 21. Не удается получить экземпляр Amazon EC2
- 22. (Java) Не удается создать экземпляр типа изображения?
- 23. Менеджер сохранения не удается создать экземпляр
- 24. Не удается создать новый экземпляр MySQLi?
- 25. Не удается открыть новый экземпляр python.exe
- 26. Не удается создать проект «Добавить экземпляр декларации»
- 27. Mockito - Не удается создать экземпляр @InjectMocks
- 28. Не удается передать экземпляр соединения PDO в другой экземпляр класса
- 29. Не удается десериализовать экземпляр java.util.List из VALUE_STRING
- 30. System.MissingMethodException: не удается создать экземпляр интерфейса
https://docs.python.org/2/library/pickle.html#what-can-be-pickled-and-unpickled –
@ Joran Beasley Спасибо, но, честно говоря, если бы я понял этот документ, я бы не пришли сюда. Должен ли я писать методы __dict__ или __getstate__? Если да, то что именно они делают. Еще раз спасибо. –
Комментировать все методы, а затем раскомментировать один за другим и попробовать рассолить его. Делая это, вы можете исключить, какой метод прерывает сериализацию. –