
On 3/16/2021 7:01 AM, Simão Afonso @ Powertools Tech wrote:
The problem is that if you have 1 normal parameter and 10 keyword-only ones, you'd be forced to say:
@dataclasses.dataclass class LotsOfFields: a: Any b: Any = field(kw_only=True, default=0) c: Any = field(kw_only=True, default='foo') d: Any = field(kw_only=True) e: Any = field(kw_only=True, default=0.0) f: Any = field(kw_only=True) g: Any = field(kw_only=True, default=()) h: Any = field(kw_only=True, default='bar') i: Any = field(kw_only=True, default=3+4j) j: Any = field(kw_only=True, default=10) k: Any = field(kw_only=True)
That's way too verbose for me. Why not:
@dataclasses.dataclass(kw_only=True) class LotsOfFields: a: Any = field(kw_only=False) b: Any = 0 c: Any = 'foo' d: Any e: Any = 0.0 f: Any g: Any = () h: Any = 'bar' i: Any = 3+4j j: Any = 10 k: Any
I'd like to avoid field() as much as possible. I think it's just too easy to miss what it's doing, since it has many arguments. And I'd like to make it easy to have a style that encourages all non-keyword-only fields to come first. Eric
Avoids weirdness with pragma and singletons that make the order of parameters important. _______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-leave@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/W7VT6K... Code of Conduct: http://python.org/psf/codeofconduct/
-- Eric V. Smith