This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author NeilGirdhar
Recipients NeilGirdhar, eric.smith, sobolevn, veky
Date 2022-02-19.08:07:03
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <CAA68w_mjWMnosBfU5EQEp4csM9waO8eon5Bh6ywZJ1-4YisQoQ@mail.gmail.com>
In-reply-to <1645257087.62.0.557266399264.issue46757@roundup.psfhosted.org>
Content
On Sat, Feb 19, 2022 at 2:51 AM Vedran Čačić <report@bugs.python.org> wrote:

>
> Vedran Čačić <vedgar@gmail.com> added the comment:
>
> That "except AttributeError" approach is a powerful bug magnet, since it
> can very easily mask real attribute errors stemming from misspelled
> attribute names in the __post_init__ call itself. What you should _really_
> do is
>
>     def __post_init__(self):
>         with contextlib.suppress(AttributeError):
>             post_init = super().__post_init__
>         post_init()
>
> But of course, nobody will ever write that.
>
> Great point!

Raymond in his "super considered super" video (
> https://youtu.be/xKgELVmrqfs?t=2068) says the right thing to do is to
> make your own root which knows exactly what classes it manages, and drops
> the supercalls from them (after possibly verifying that all kwargs have
> actually been used and so on).
>
> But in case of dataclasses, usually any class can serve as such a root,
> and the main reason people use dataclasses is to avoid boilerplate code. So
> I think it would be a nice compromise.
>

I'm not sure I understand what you're saying here.  Anyone can inherit from
a class C with the special root and some other class D, and then your
introduced root won't catch D's super calls.

>
> ----------
> nosy: +veky
>
> _______________________________________
> Python tracker <report@bugs.python.org>
> <https://bugs.python.org/issue46757>
> _______________________________________
>
History
Date User Action Args
2022-02-19 08:07:03NeilGirdharsetrecipients: + NeilGirdhar, eric.smith, veky, sobolevn
2022-02-19 08:07:03NeilGirdharlinkissue46757 messages
2022-02-19 08:07:03NeilGirdharcreate