
Getting to Know Python 3.7- Data Classes, Async-Await and More - joeyespo
https://blog.heroku.com/python37-dataclasses-async-await
======
abatilo
Shameless plug:

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](https://github.com/abatilo/typed-json-dataclass)

~~~
BerislavLopac
attrs is basically what dataclasses haven't dared to be:
[https://www.attrs.org](https://www.attrs.org)

For more context see [https://www.attrs.org/en/stable/why.html#data-
classes](https://www.attrs.org/en/stable/why.html#data-classes) and
[https://www.python.org/dev/peps/pep-0557/#why-not-just-
use-a...](https://www.python.org/dev/peps/pep-0557/#why-not-just-use-attrs)

~~~
jgalt212
True that.

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.

~~~
BerislavLopac
> 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.

------
mark_l_watson
Nice article! I am just getting into writing my own decorators and I will
appreciate every example and docs I can find. After 30+ years of preferring
Lisp languages, I have been forced to accept Python as my main driver because
of the ecosystem for deep learning, probabilistic programming, etc. Both of
the books I am writing right now are Python books (one is general building
intelligent systems with Python, the other covers knowledge graphs and deep
learning and how they play together). Virtually all my work for the last 4
years has also used Python.

Anyway, it is rough emotionally using Lisp languages infrequently but
improvements in Python 3.7 as described in this article make it less painfull.

~~~
maayank
Any favorite non trivial paradigms in python for the functional enthusiast?

~~~
mark_l_watson
I probably write fewer class definitions than most developers, and write more
functions. Avoid global data. Not functional, but I like to write small
libraries.

------
yen223
Fun fact: contextvars are implemented as HAMTs, the same immutable maps as
found in Clojure.

