pythonintermediate
Python Enum Advanced Patterns
Use Python enums with custom values, methods, auto(), and Flag for type-safe constants.
pythonPress ⌘/Ctrl + Shift + C to copy
from enum import Enum, auto, Flag, IntEnum
from functools import total_ordering
class Color(Enum):
RED = "#FF0000"
GREEN = "#00FF00"
BLUE = "#0000FF"
@property
def rgb(self) -> tuple[int, int, int]:
hex_val = self.value.lstrip('#')
return tuple(int(hex_val[i:i+2], 16) for i in (0, 2, 4))
class Status(Enum):
PENDING = auto()
ACTIVE = auto()
SUSPENDED = auto()
DELETED = auto()
def is_visible(self) -> bool:
return self in (Status.PENDING, Status.ACTIVE)
class Permission(Flag):
READ = auto()
WRITE = auto()
DELETE = auto()
ADMIN = READ | WRITE | DELETE
admin_perms = Permission.READ | Permission.WRITE
print(Permission.READ in admin_perms) # True
print(Permission.DELETE in admin_perms) # False
@total_ordering
class Priority(IntEnum):
LOW = 1
MEDIUM = 2
HIGH = 3
CRITICAL = 4
tasks = [Priority.HIGH, Priority.LOW, Priority.CRITICAL]
print(sorted(tasks)) # [LOW, HIGH, CRITICAL]Use Cases
- type-safe constants
- permission systems
- state machines
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
pythonintermediate
Python Context Manager Patterns
Create custom context managers with __enter__/__exit__ and contextlib for resource management.
Best for: Automatic resource cleanup and lifecycle management
#python#context-manager
pythonintermediate
Python Dataclass Advanced Patterns
Advanced dataclass usage with validation, post-init processing, slots, and frozen instances.
Best for: Type-safe data models without ORMs
#python#dataclass
pythonintermediate
Python Functools and Decorator Patterns
Useful decorator patterns with functools including caching, retry, timing, and rate limiting.
Best for: Adding retry logic to flaky operations
#python#decorators
pythonbeginner
Enum Types
Advanced Python pattern: enum-types
Best for: advanced programming
#python#advanced