__getstate__ et __setstate__
Résolu
riripas
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
soyouz123 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
soyouz123 Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Source : https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/233046-appliquez-des-methodes-speciales : 5e partie : Des méthodes spéciales utiles à pickle.
Bonsoir à tous. :) Voici mon problème : dans l'exemple de ce cours, nous devons obtenir 0. En copiant et en collant le code du cours, et en l'ayant vérifié (normalement), j'arrive à cette capture d'écran : la variable reste à 0. Je ne comprends pas. C'est pour cela que j'écris, avant que je ne m'énerve contre Python. :)
Merci beaucoup pour votre aide.
PS : dans la suite du cours, on propose une autre solution avec __setstate__ mais celle-ci ne marche pas non plus. Mais j'attends de voir la solution avec __getstate__.
Bonne fin de soirée à tous. ;)
Bonsoir à tous. :) Voici mon problème : dans l'exemple de ce cours, nous devons obtenir 0. En copiant et en collant le code du cours, et en l'ayant vérifié (normalement), j'arrive à cette capture d'écran : la variable reste à 0. Je ne comprends pas. C'est pour cela que j'écris, avant que je ne m'énerve contre Python. :)
Merci beaucoup pour votre aide.
PS : dans la suite du cours, on propose une autre solution avec __setstate__ mais celle-ci ne marche pas non plus. Mais j'attends de voir la solution avec __getstate__.
Bonne fin de soirée à tous. ;)
A voir également:
- __getstate__ python
- Citizen code python avis - Accueil - Outils
- Mot secret python pix ✓ - Forum Python
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Python par la pratique : 101 exercices corrigés pdf - Forum Python
- Exercice python - Forum Python
2 réponses
Salut,
Dans ton dernier bloc, ce n'est pas
Dans ton dernier bloc, ce n'est pas
Temp().attribut_temporaireque tu dois afficher, mais
score.attribut_temporaire, puisque c'est dans ta variable score que tu affectes la désérialisation ;)
riripas
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
2
Merci beaucoup, cela marche ! J'essaie immédiatement avec __setstate__. :)
riripas
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
2
Voilà, cela marche avec __setstate__. Merci pour toutes les secondes que j'ai économisées grâce à toi. ;) Bonne soirée.
soyouz123
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
Merci beaucoup, cela m'a énormément aidé
Bon, ma capture d'écran n'est pas passée.
Ca ne marche pas visiblement. Allez, je copie/colle.
Re-bonne soirée. ;)
Ca ne marche pas visiblement. Allez, je copie/colle.
Python 3.5.2rc1 (v3.5.2rc1:68feec6488b2+, Jun 12 2016, 08:56:24) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> import pickle
>>> class Temp:
"""Classe contenant plusieurs attributs, dont un temporaire"""
def __init__(self):
"""Constructeur de notre objet"""
self.attribut_1 = "une valeur"
self.attribut_2 = "une autre valeur"
self.attribut_temporaire = 5
def __getstate__(self):
"""Renvoie le dictionnaire d'attributs à sérialiser"""
dict_attr = dict(self.__dict__)
dict_attr["attribut_temporaire"] = 0
return dict_attr
>>> with open("attributs", "wb") as fichier:
pickler = pickle.Pickler(fichier)
pickler.dump(Temp())
print(Temp().attribut_temporaire)
5
>>> with open("attributs", "rb") as fichier:
depickler = pickle.Unpickler(fichier)
score = depickler.load()
print(score)
<__main__.Temp object at 0x0000018D2CFEDA90>
>>> with open("attributs", "rb") as fichier:
depickler = pickle.Unpickler(fichier)
score = depickler.load()
print(Temp().attribut_temporaire)
5
>>>
Re-bonne soirée. ;)