Message413540
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>
> _______________________________________
> |
|
Date |
User |
Action |
Args |
2022-02-19 08:07:03 | NeilGirdhar | set | recipients:
+ NeilGirdhar, eric.smith, veky, sobolevn |
2022-02-19 08:07:03 | NeilGirdhar | link | issue46757 messages |
2022-02-19 08:07:03 | NeilGirdhar | create | |
|