Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Duda con "imitar" enum en Python 2.7

Estas en el tema de Duda con "imitar" enum en Python 2.7 en el foro de Python en Foros del Web. Hola a todos. Estoy intentando imitar los enums de C/C++ o C# en python. Básicamente lo que hago es una clase con atributos estáticos. Código: ...
  #1 (permalink)  
Antiguo 23/09/2014, 03:11
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 8 meses
Puntos: 3
Duda con "imitar" enum en Python 2.7

Hola a todos.

Estoy intentando imitar los enums de C/C++ o C# en python. Básicamente lo que hago es una clase con atributos estáticos.
Código:
class FRAME_TYPE():
    FT_AT_COMMAND = 0x08
    FT_AT_COMMAND_QUEUE = 0x09
    FT_REMOTE_AT_COMMAND = 0x17
    FT_AT_COMMAND_RESPNS = 0x88
    FT_MODEM_STATUS = 0x8A
    FT_REMOTE_COMMAND_RESPNS = 0x97
La duda que tengo es como, dentro de una función que recibe un parámetro del tipo del "enum", comprobar que su valor es correcto y lanzar una excepción en otro caso, es decir:
Código:
def getFrame(self, frameType):
        if( not checkValue(frameType)):
            raise ValueError("...")
Una manera sería comprobar todos los valores uno por uno, pero quiero saber su hay una manera mejor. Me vale con acceder a la lista de todos los atributos de la clase, pero son estáticos así que con __dict__ no puedo hacerlo.

¿Cómo puedo hacerlo?

Gracias, saludos.
  #2 (permalink)  
Antiguo 23/09/2014, 12:30
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Duda con "imitar" enum en Python 2.7

Para python 3.4 existen enums nativos.

Esto ha sido backporteado a versiones anteriores incluyendo python 2.7.
https://pypi.python.org/pypi/enum34
  #3 (permalink)  
Antiguo 25/09/2014, 01:11
 
Fecha de Ingreso: febrero-2014
Mensajes: 55
Antigüedad: 10 años, 8 meses
Puntos: 3
Respuesta: Duda con "imitar" enum en Python 2.7

Ok, muchas gracias.

Etiquetas: enum, ip
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:57.