• [^] # 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é à 1. Dernière modification le 19 mars 2014 à 14:35.

    Bon, voilà un autre exemple que j'a&i eu à traiter il y a peu :

    J'utilise le module logging.

    Je veux parser dans 4 fichiers différents les messages de type INFO, WARNING, ERROR, et DEBUG.

    Je veux nommer mes fichiers monprog-.log avec "level" correspondant à info, warning, error ou debug.

    En ruby, la façon générale de faire est de définir un symbole :ERROR :WARNING :INFO et :DEBUG

    J'aurais donc un truc du genre (si les symboles existaient comme en Ruby):

    mylogger=logging.getLogger(name)
    for i in (:ERROR, :WARNING, :INFO, :DEBUG) :
     FILENAME="monprog"+'-'+(i.to_str()).lower()+".log"
     h=logging.handlers.RotatingFileHandler(
     FILENAME, backupCount=5)
     h.doRollover()
     h.setLevel(i)
     mylogger.addHandler(ch)
    

    Or actuellement, les levels INFO, WARNING, DEBUG et ERROR soint implémentés ainsi :

    ERROR = 40
    WARNING = 30
    INFO = 20
    DEBUG = 10

    Comment puis-je donc faire le même genre de chose sans utiliser un dictionnaire ?