On Wed, Apr 15, 2020 at 8:45 AM Christopher Barker <python...@gmail.com>
wrote:

> > you'd just add *args and **kwargs to the init signature and call
> super().__init__(*args, **kwargs).
>
>>
>> Which is what the OP is after.
>>
>
> Hmm, makes me wonder if there should be an option to define a __pre_init__
> method.
>

Also note that the 'attr' package on PyPI is still available and provides
features that dataclasses do not. Generalizing something in the stdlib is
not always the best/necessary solution, especially if there's a
battle-tested alternative available on PyPI.

-Brett


>
> Then you could customize the signature, but still use data classes nifty
> features for the primary __init__
>
> And no, I haven’t thought this out, it would be tricky, and maybe
> impossible.
>
> Which brings me back to the suggestion in a PR:
>
> Optional have the __init__ accept *args, *kwargs, and then store them in
> self. Then users could do whatever they like with them in __post_init
>
> -Chris
>
> It becomes more painful the more parameters the parent has- parameters
>> which the dataclass may not even care about. It not only makes the class
>> definition long, it adds so these additional parameters to the init
>> signature, which is icky for introspection and discoverability. Lots of
>> "What the heck is this parameter doing here?" head scratching for future me
>> (because I forget everything).
>>
>> There's currently not a very compelling solution, AFAIK, to be able to
>> use dataclasses in these kinds of situations ("these kinds" = any situation
>> other than the most simple) other than the solution Christopher Barker
>> suggested: using a mixin approach that treats the dataclass parameters
>> specially. So I just haven't.
>>
>> I did write a decorator of my own that replaces the dataclass init with
>> one that calls super().__init__(*args, **kwargs) first before proceeding
>> with the one written by dataclasses... I can't find it at the moment. But
>> that has its own problems; one being the IDE doesn't know the init has been
>> rewritten this way and so will complain about parameters sent to the
>> dataclass that it doesn't know about.
>>
>>> --
> Christopher Barker, PhD
>
> Python Language Consulting
>   - Teaching
>   - Scientific Software Development
>   - Desktop GUI and Web Development
>   - wxPython, numpy, scipy, Cython
> _______________________________________________
> 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/TH4I7L5FMDEAHCLN7EE3DZFZFPPXG5GH/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
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/E6RM5FFELZO5RTCGOQRQ5I6QDVWCTMKV/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to