Currently, the reprlib module [1] offers an "alternate repr() implementation", and focuses mainly on guarding the length of the returned string. I propose to broaden its scope slightly and make it the place to add helper functions for writing __repr__(), and to add one such function. A dataclass automatically generates a __repr__ method (unless you ask it not to). @dataclasses.dataclass class Spam: quality: int recipe: str ham: complex
Spam(75, "<censored>", 1j) Spam(quality=75, recipe='<censored>', ham=1j)
For non-dataclass classes, it would be extremely helpful to have an easy helper function available: class Spam: def __repr__(self): return reprlib.kwargs(self, ["quality", "recipe", "ham"]) The implementation for this function would be very similar to what dataclasses already do: # in reprlib.py def kwargs(obj, attrs): attrs = [f"{a}={getattr(obj, a)!r}" for a in attrs] return f"{obj.__class__.__qualname__}({", ".join(attrs)})" A similar function for positional args would be equally easy. Bikeshedding opportunity: Should it be legal to omit the attrs parameter, and have it use __slots__ or fall back to dir(obj) ? ChrisA [1] https://docs.python.org/3/library/reprlib.html