Vedran Čačić <[email protected]> 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.
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.
----------
nosy: +veky
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue46757>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com