On Wed, Oct 11, 2017 at 10:33 PM, Mike Miller <python-dev@mgmiller.net> wrote:
(Apologies for reviving a dead horse, but may not be around at the blessed time.)

As potential names of this concept, I liked record and row, but agreed they were a bit too specific and not quite exact.  In my recent (unrelated) reading however, I came across another term and think it might fit better, called an "entity."

I'm not familiar with ER modelling but I would advise against using the term "entity", as it has, in domain-driven design (DDD) a very specific meaning:

"An object that is not defined by its attributes, but rather by a thread of continuity and its identity." (from https://en.wikipedia.org/wiki/Domain-driven_design#Building_blocks)

See also the more general Wikipedia definition "An entity is something that exists as itself, as a subject or as an object, actually or potentially, concretely or abstractly, physically or not." (https://en.wikipedia.org/wiki/Entity).

In the context of DDD, entities are usually opposed to value objects: "An object that contains attributes but has no conceptual identity. They should be treated as immutable.". (https://en.wikipedia.org/wiki/Domain-driven_design#Building_blocks)

Attrs, and by extension the dataclass proposal (I guess), provide some support for both: 

- Providing support for quickly constructing immutable objects from a bag of attributes, and providing equality based on those attributes, it helps implement Value Objects (not sure much more is needed actually)

- By supporting equality based on some "primary key", it will also help with maintaining the concept of "equality" in entities.

It would be great if the dataclass proposal could help implement DDD technical concepts in Python, but its terminology should not conflict the DDD terminology, if we want to avoid confusion.

Cheers,

  S.

--
Stefane Fermigier - http://fermigier.com/ - http://twitter.com/sfermigier - http://linkedin.com/in/sfermigier
Founder & CEO, Abilian - Enterprise Social Software - http://www.abilian.com/
Chairman, Free&OSS Group / Systematic Cluster - http://www.gt-logiciel-libre.org/
Co-Chairman, National Council for Free & Open Source Software (CNLL) - http://cnll.fr/
Founder & Organiser, PyData Paris - http://pydata.fr/
---
“You never change things by fighting the existing reality. To change something, build a new model that makes the existing model obsolete.” — R. Buckminster Fuller