When 3.7 was first released, I created a library to use dataclasses and add some light type validation to them. The library grew and now also supports some basic serialization mapping.
worth mentioning the attr library in this context, which is I think the most popular implementation and inspiration for dataclasses (I think I read the reason it's not in core is to allow it to move faster). My interpretation of dataclasses in the stlib was to put a seal of approval on attr.
Look pretty good, but that approach won't be sufficient for more advance serialisation e.g. you want a user with password in case X and without in case Y. Type system is not expressive enough, so you need something more expressive like Marshmallow.
I'm not an OOP person, but to me, dataclasses seem like a solution in search of a problem. Or, even more nefariously, it seems akin to the Clojure model, if the core team didn't develop it, it won't be officially blessed.
I'm more than willing to hear the other side, but I've read some and watched a few talks on dataclasses, and while their implementation is neat, I cannot figure out how I'd used them on a regular basis.
> I'm not an OOP person, but to me, dataclasses seem like a solution in search of a problem.
As an OOP person, I would say that dataclasses are an incomplete solution to a complex, multi-faceted problem, and a solution which doesn't really solve any of those facets. It is pretty much unusable as it is; for any practical use you need to extend it based on the specific needs of your application. But then it makes more sense to use a more complete solution such as attrs, which covers a much wider set of problems.
Nice! I always end up implementing some portion of this on every major project I do. After using something like Rust's Serde crate, you really miss this functionality in Python.
When 3.7 was first released, I created a library to use dataclasses and add some light type validation to them. The library grew and now also supports some basic serialization mapping.
I'd love some feedback/issues/PRs
https://github.com/abatilo/typed-json-dataclass