[Python-Dev] PEP 557: Data Classes

Mike Miller python-dev at mgmiller.net
Thu Oct 12 04:20:30 EDT 2017


On 2017-10-12 00:36, Stéfane Fermigier wrote:
> "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)

Not sure I follow all this, but Python objects do have identities once 
instantiated.  e.g. >>> id('')

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

I don't believe either module particularly supports or restricts immutability?

-Mike


More information about the Python-Dev mailing list