Tipos Enum
Tipos Enum
Sección titulada «Tipos Enum»PyGo proporciona soporte nativo para tipos enumerados (enum) con validación en tiempo de compilación. Los enums se definen en el DSL .pgo y se transpilan mecánicamente a código Go y Python idiomático.
Definir un Enum
Sección titulada «Definir un Enum»Enums respaldados por cadena (por defecto)
Sección titulada «Enums respaldados por cadena (por defecto)»enum Status: active inactive pendingEnums numéricos
Sección titulada «Enums numéricos»enum Role: admin=1 author=2 reader=3Código Generado
Sección titulada «Código Generado»type Status string
const ( StatusActive Status = "active" StatusInactive Status = "inactive" StatusPending Status = "pending")
type Role int
const ( RoleAdmin Role = 1 RoleAuthor Role = 2 RoleReader Role = 3)import enum
class Status(str, enum.Enum): ACTIVE = "active" INACTIVE = "inactive" PENDING = "pending"
class Role(int, enum.Enum): ADMIN = 1 AUTHOR = 2 READER = 3Usar Enums en Modelos
Sección titulada «Usar Enums en Modelos»enum Status: active inactive
model User: id: UUID name: String status: Status role: RoleValidación de Enums
Sección titulada «Validación de Enums»Los enums se validan en tiempo de compilación:
model Post: title: String status: Status
# Válidopost = Post(title="Hello", status=Status.published)
# Inválido — error de compilación (no es un valor válido de Status)# post = Post(title="Hello", status="published")Representación en Base de Datos
Sección titulada «Representación en Base de Datos»Por defecto, PyGo almacena los enums como su valor de cadena en la base de datos:
CREATE TABLE user ( id UUID PRIMARY KEY, name TEXT NOT NULL, status TEXT NOT NULL, -- almacena "active", "inactive", "pending" role INTEGER -- almacena 1, 2, 3 (para enums numéricos));Mejores Prácticas
Sección titulada «Mejores Prácticas»- Usa enums respaldados por cadena para valores legibles por humanos
- Usa enums numéricos para eficiencia de almacenamiento
- Siempre usa la constante del enum, nunca cadenas crudas