• [^] # Re: A quand l'équivalent des symboles Ruby en Python ?

    Posté par . En réponse à la dépêche Python 3.4 est sorti avec 7 nouveaux modules. Évalué à 6.

    Après avoir lu tous les commentaires, je trouve que c'est une mauvaise solution à un vrai problème.

    Je suis d'accord que l'utilisation des string pour ça est très mauvaise, mais les symboles ne sont pas beaucoup mieux notamment parce qu'ils n'apportent rien en terme de typage et de sécurité.

    Tu parle des niveaux de log. Rien ne t'empêche de passer une mauvaise valeur. Tu ne peux pas non plus les énumérer.

    Le fait de pouvoir s'en servir pour appeler une méthode me semble aussi affreux.

    La bonne solution est simple, c'est une énumération. Celle du C++ est pittoresque, mais si tu regarde du coté de Java par exemple :

    public enum LogLevel {
     DEBUG, TRACE, INFO, WARNING, ERROR, FATAL;
    }

    Tu peux évidement critiquer la verbosité de java (mais c'est aussi possible en scala, clojure et pleins d'autres). Mais tu as quelque chose qui t'apporte fonctionnellement tout ce que tu cherche avec en plus un typage (ce qui permet de regrouper les valeurs). Bon après en java les enum peuvent en plus porter des données et du code, mais je trouve ça plutôt bien fait.

    Les enum de python doivent répondre à ton besoin.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)