Résolue

Problème de mise en forme de code Python

# Python # Module os # Classes
import os
import json
from constantes import DATA_DIR

class Liste(list):
    def __init__(self, nom):
        self.nom = nom

    def ajouter(self, element):
        if not isinstance(element, str):
            raise ValueError("Vous ne pouvez ajouter que des chaînes de caractères!") 
        if element in self:
            print(f"{element} est déja dans la liste." )
            return False
        self.append(element)
        return True

    def enlever(self, element):
        if element in self:
            self.remove(element)
            return True
        return False

    def afficher(self):
        print(f"Ma liste de {self.nom} :")
        for element in self:
            print(f" - {element}")

    def sauvegarder(self):
        chemin = os.path.join(DATA_DIR, f"{self.nom}.json")
        if not os.path.exists(DATA_DIR):
            os.makedirs(DATA_DIR)
        with open(chemin, "w") as f:
            json.dump(self, f, indent=4)
        return True

Gabriel Trouvé

Mentor

Bonsoir,

Ton code fonctionne très bien bravo !

Si tu souhaites l'améliorer, tu pourrais voir pour ajouter de la gestion d'erreurs supplémentaire et une méthode pour vider complètement la liste :).

Bravo en tous cas !

Bonjour,

Techniquement, le type list n'est pas destiné à être directement étendu par héritage. Cela fonctionne en surface, mais il y a plein de petites subtilités qui ne fonctionnent pas correctement lorsqu'on hérite directement de list. A la place :

from collections import UserList

class Liste(UserList) : 
   ... 

Par ailleurs, dans ton code, tu ne tires pas du tout parti de cet héritage de list, et tu oublie d'invoquer super().__init__() dans ta méthode d'initialisation.

Salut Thierry,

En fait dans la vidéo de correction, au niveau de l'exercice il n'y a pas le super et c'est list qui est utilisé. C'est pour ça ^^

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.