Articles of enums

Comprobación de tipos de enumeración válidos de protobufs

En mi archivo protobuf llamado skill.proto, tengo: message Cooking { enum VegeType { CAULIFLOWER = 0; CUCUMBER = 1; TOMATO = 2 } required VegeType type = 1; } En otro archivo (por ejemplo, nombre.py) quiero verificar que la enumeración dentro del archivo sea un tipo válido #if (myCookingStyle.type != skill_pb2.Cooking.VegeTypes): print “Error: invalid cooking […]

Enum de Python a través de módulos

¿Por qué en Python 3 la igualdad de enumeración no se puede verificar correctamente a través de los límites de los módulos si la enumeración se ha definido en el módulo principal? Aquí hay un ejemplo: móduloA.py: #!/usr/bin/python3 import moduleB from enum import Enum, unique @unique class MyEnum(Enum): A = 1 B = 2 # […]

¿Cómo extender Python Enum?

¿Cuál es la mejor práctica para extender el tipo Enum en Python 3.4 y hay incluso una posibilidad para hacer esto? Por ejemplo: from enum import Enum class EventStatus(Enum): success = 0 failure = 1 class BookingStatus(EventStatus): duplicate = 2 unknown = 3 Traceback (most recent call last): … TypeError: Cannot extend enumerations Actualmente no […]

¿Cuándo debo subclasificar EnumMeta en lugar de Enum?

En este artículo, Nick Coghlan habla sobre algunas de las decisiones de diseño que se EnumMeta tipo de EnumMeta PEP 435 , y sobre cómo se puede subclasificar a EnumMeta para proporcionar una experiencia de Enum diferente. Sin embargo, el consejo que doy (y soy el autor principal de Enum stdlib) sobre el uso de […]

Clase Python Enum (con cadena de cadenas)

He encontrado una forma sencilla de implementar (piratear) una enumeración en Python: class MyEnum: VAL1, VAL2, VAL3 = range(3) Entonces puedo llamar a esto como tal: bob = MyEnum.VAL1 ¡Sexy! Muy bien, ahora quiero poder obtener tanto el valor numérico si se le da una cadena, o una cadena si se le da un valor […]

¿Es posible anular __new__ en una enumeración para analizar cadenas en una instancia?

Quiero analizar cadenas en Python enums. Normalmente se implementaría un método de análisis para hacerlo. Hace unos días descubrí el método __new__ que es capaz de devolver diferentes instancias basadas en un parámetro dado. Aquí mi código, que no funcionará: import enum class Types(enum.Enum): Unknown = 0 Source = 1 NetList = 2 def __new__(cls, […]

Especificando un mySQL ENUM en un modelo de Django

¿Cómo hago para especificar y usar un ENUM en un modelo de Django?

Utilice el orden de definición de Enum como orden natural

Estoy tratando de crear una subclase Enum cuyos valores usan su orden de definición como su orden de clasificación natural, como en el siguiente ejemplo: @functools.total_ordering class SelectionType(enum.Enum): character = ‘character’ word = ‘word’ sentence = ‘sentence’ paragraph = ‘paragraph’ def __le__(self, other): if not isinstance(other, SelectionType): return NotImplemented return self._positions[self] < self._positions[other] SelectionType._positions = […]

Usando enumeraciones en ctypes.Estructura

Tengo una estructura a la que estoy accediendo a través de ctypes: struct attrl { char *name; char *resource; char *value; struct attrl *next; enum batch_op op; }; Hasta ahora tengo el código de Python como: # struct attropl class attropl(Structure): pass attrl._fields_ = [ (“next”, POINTER(attropl)), (“name”, c_char_p), (“resource”, c_char_p), (“value”, c_char_p), Pero no […]

Establecer automáticamente el valor de un miembro enum a su nombre

He estado jugando con la biblioteca de enumeración de python y he encontrado un enigma. En los documentos, muestran un ejemplo de una enumeración de numeración automática , en la que se define algo: class Color(AutoNumber): red = () green = () … Quiero hacer una clase similar, pero el valor se establecería automáticamente a […]