• [^] # Re: En Python

    Posté par (Mastodon) . En réponse au message Avent du Code, jour 7. Évalué à 3.

    Et un peu d'utilisation de fonction magiques chez moi ici :

    class Directory:
     def __getitem__(self, name):
     return self.files[name]

    Et là pour chopper le sous-répertoire "toto" de mon Directory(truc) je fais truc['toto'].
    Je n'ai même pas pensé à inclure le '..' dans mes fichiers, j'ai un cas particulier si on fait cd .., c'était tellement évident de faire ça !

    On pourrait accéder à truc/toto via truc.toto en implémentant __getattr__ comme j'ai fait le __getitem__, mais si "toto" est dans une variable il faut faire getattr(truc, variable_toto), ça ne simplifie pas la lecture, c'est plus simple d'utiliser truc[variable_toto].

    Après on peut implémenter __truediv__ et faire que truc/"toto" retourne Directory(truc/toto).
    Là on a root/"a"/"b"/".."/"c"/".."/".."/"e"/"f" = Directory("/e/f") :)
    Mais les guillemets partout alourdissent la lecture et l'écriture...

    Sinon, côté algo, et même implémentation, c'est pareil rien à signaler, pas de subtilité, j'ai juste utilisé du if line.startswith("$ cd"): cwd = cwd[line[5:]] plutôt qu'une regexp.

    • Yth.