Open AJR1991 opened 3 years ago
No, it's not already possible. I originally didn't want to implement something like late_init
(taking the name from Kotlin) because I think it means checking the type before generating __init__
which we don't do for anything else, so it would be messy. Even factory
is implemented without needing to do this. I also thought it was neat just to be able to simply assign attributes in __post_init__
. That said it never occurred to me that missing it out would be a problem for slotted classes.
I need to think about this more to work out how best to implement the feature.
I want to use slots in CPython using dataclassy, but I also want to be able to hide initializers for certain variables from the user. For example:
What I'm doing here is making
_hidden
and_post
unable to be initialized as part of the given args on construction (meaning you can't set it via_hidden="hello"
) . It's possible to do this kind of thing without slots by just initializing it in__post_init__
but with slots, you can't without having to define__slots__
at the top, which looks ugly.Is it possible to add this functionality? Or am I misreading documentation and this is already possible?