Python Class Generator
Generates a Python class skeleton with init, methods, and a dunder repr
About this generator
Starting a new Python class means typing the same `__init__` boilerplate, forgetting `__repr__`, and wondering whether a dataclass would be simpler. This tool generates a clean class skeleton so you can focus on logic instead of structure. Enter a class name (normalised to PascalCase) and comma-separated attributes, then toggle the dataclass option. The plain class produces a docstring, typed `__init__`, a `summary` stub, and `__repr__` with `!r` formatting. The dataclass mode produces `@dataclass` with typed fields, letting Python generate `__init__`, `__repr__`, and `__eq__`. All types default to `str` — replace them with real types once you paste the code in. The `__repr__` is included by default because it is the method most commonly forgotten.
How to use
- Enter the class name.
- List the attributes separated by commas.
- Toggle the dataclass option if you want the concise form.
- Copy the class into your module and adjust the types.
Use Cases
- •Scaffolding a new model or service class quickly
- •Keeping a consistent class style across a codebase
- •Remembering the __init__ and __repr__ boilerplate
- •Choosing between a plain class and a dataclass
- •Teaching Python class structure to newcomers
Tips
- →Replace the str type hints with your real types right away.
- →Reach for a dataclass when the class is mostly data.
- →Keep __repr__ unambiguous so logs are easy to read.
- →Add type hints everywhere so editors can help you.
FAQ
why do all attribute types default to str
The generator has no way to know your real types, so `str` is used as a neutral placeholder that produces valid Python immediately. Replace each annotation with `int`, `float`, `datetime`, or your own classes once you paste the skeleton in.
when should I choose the dataclass option
Use `@dataclass` when the class primarily holds data and you want Python to generate `__init__`, `__repr__`, and `__eq__` for you. Choose the plain class when you need custom constructor logic, property descriptors, or full control over each method.
why does the plain class include a __repr__
A `__repr__` makes objects readable in logs, the REPL, and debuggers by showing field values instead of a memory address. It is one of the most commonly forgotten methods and one of the highest-value ones to define.
can I use attribute names with spaces or dashes
Yes. The generator strips invalid characters and normalises each attribute to lowercase snake_case, so inputs like "order-id" or "Total Price" become `order_id` and `total_price` in the generated code.
You might also like
Popular tools from other categories that share themes with this one.