pythonintermediate
Dataclass with __post_init__ Validation
Add custom validation to Python dataclasses using __post_init__.
pythonPress ⌘/Ctrl + Shift + C to copy
from dataclasses import dataclass, field
from typing import List
@dataclass
class User:
name: str
email: str
age: int
tags: List[str] = field(default_factory=list)
def __post_init__(self):
if not self.name.strip():
raise ValueError("Name cannot be empty")
if "@" not in self.email:
raise ValueError(f"Invalid email: {self.email}")
if not 0 < self.age < 150:
raise ValueError(f"Invalid age: {self.age}")
self.name = self.name.strip()
self.email = self.email.lower().strip()
user = User(name="Alice", email="Alice@Example.com", age=30)
print(user) # User(name='Alice', email='alice@example.com', age=30)Use Cases
- Input validation
- Config objects
- Domain models
Tags
Related Snippets
Similar patterns you can reuse in the same workflow.
pythonbeginner
Dataclass with Validation
Python dataclass with __post_init__ field validation, type coercion, and descriptive error messages.
Best for: Data transfer objects
#dataclass#validation
pythonbeginner
Dataclasses with Post-Init Processing
Use Python dataclasses with __post_init__ for computed fields, validation, and default factories.
Best for: Domain models
#dataclasses#python
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
Data Validation with Pydantic Models
Define and validate data models with Pydantic for type-safe Python applications.
Best for: API request validation
#python#pydantic