It's been two years since this proposal has been postponed - I would like to 
revive it.

A quick recap (quotes edited for brevity):

> > >     On 23 January 2018 at 03:33, George Leslie-Waksman
> > >     <waks...@gmail.com mailto:waks...@gmail.com> wrote:
> > >
> > >         The proposed implementation of dataclasses prevents defining
> > >         fields with defaults before fields without defaults. This can
> > >         create limitations on logical grouping of fields and on 
> > > inheritance.
> > >
> > >         Take, for example, the case:
> > >
> > >         @dataclass
> > >         class Foo:
> > >              some_default: dict = field(default_factory=dict)
> > >
> > >         @dataclass
> > >         class Bar(Foo):
> > >              other_field: int
> > >
> > >         this results in the error:
> > >         TypeError: non-default argument 'other_field' follows default
> > >         argument
> > >
> > >         I understand that this is a limitation of positional arguments
> > >         because the effective __init__ signature is:
> > >
> > >         def __init__(self, some_default: dict = <something>,
> > >         other_field: int):
> > >
> > >         However, keyword only arguments allow an entirely reasonable
> > >         solution to this problem:
> > >
> > >         def __init__(self, *, some_default: dict = <something>,
> > >         other_field: int):
> > >
> > >         And have the added benefit of making the fields in the
> > __init__
> > >         call entirely explicit.
> > >
> > >         So, I propose the addition of a keyword_only flag to the
> > >         @dataclass decorator that renders the __init__ method using
> > >         keyword only arguments:
> > >
> > >         @dataclass(keyword_only=True)
> > >         class Bar(Foo):
> > >              other_field: int
> > >
> > >         --George Leslie-Waksman

Guido van Rossum wrote:
>  We can reconsider for 3.8.
> --Guido van Rossum (python.org/~guido)

What do you think about implementing this now? What should be the next step? 
Would it require a PEP?
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@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/Y3N6DIC4NLXY36GLZCXHE4NPO4VTNBGS/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to