Martijn Pieters <m...@python.org> added the comment:

I've supported people hitting this issue before (see 
https://stackoverflow.com/a/53085935/100297, where I used a series of mixin 
classes to make use of the changing MRO when the mixins share base classes, to 
enforce a field order from inherited classes.

I'd be very much in favour of dataclasses using the attrs approach to field 
order: any field named in a base class *moves to the end*, so you can 'insert' 
your own fields by repeating parent fields that need to come later:

@attr.s(auto_attribs=True)
class Parent:
    foo: str
    bar: int
    baz: bool = False


@attr.s(auto_attribs=True)
class Child(Parent):
    spam: str
    baz: bool = False


The above gives you a `Child(foo: str, bar: int, spam: str, baz: bool = False)` 
object, note that `baz` moved to the end of the arguments.

`dataclasses` currently doesn't do this, so it'd be a breaking change.

----------
nosy: +mjpieters

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue36077>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to