es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Enumeraciones con nombres numéricos

Lo siguiente no funciona en Python:

class MemorySize(int, Enum):
    "1024" = 1024
    "2048" = 2048

Entonces, ¿cuál sería la forma más cercana de hacer esto sin tener que escribir el número completo en palabras y hacerlo seguro?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una posible solución sería utilizar un diccionario para asignar las representaciones en cadena de los tamaños de memoria a sus valores enteros correspondientes. Esto se puede hacer utilizando el siguiente código:

    class MemorySize(Enum):
        sizes = {
            '1024': 1024,
            '2048': 2048,
            # Agrega más asignaciones de tamaños según sea necesario
        }
    
        def __new__(cls, size_str):
            size_int = cls.sizes[size_str]
            obj = object.__new__(cls)
            obj._value_ = size_int
            return obj
    

    Con esta implementación, puedes crear nuevos valores de enumeración de tamaño de memoria pasando la representación en cadena del tamaño:

    memory_size = MemorySize('1024')
    print(memory_size.value) # Salida: 1024
    

    Este enfoque te permite definir y usar valores de enumeración de tamaño de memoria sin tener que escribir todo el número en palabras, al tiempo que garantiza la seguridad del tipo.

Comments are closed.