Usually, I prefer dataclass-like objects to have keyword-only __init__. In general, I believe that invocations with more than one or two positional arguments are a risk to refactoring and make the code harder to read. and dataclasses with just one or two fields seem to defeat the purpose.