[Python-Dev] PEP 557: Data Classes

Eric V. Smith eric at trueblade.com
Mon Sep 11 09:51:11 EDT 2017

On 9/11/17 9:43 AM, tds333 at mailbox.org wrote:
> Hi Eric,
> I have on question not addressed yet.
> The implementation is based on "__annotations__" where the type is specified.
> But "__annotations__" is not always filled. An interpreter version with special optimization
> could remove all __annotations__ for performance reasons. (Discussed in other threads)
> In this case the dataclass does not work or will there be a fallback?
> I know it is a little bit hypothetical because an interpreter with this optimization is
> not there yet. I am looking only in the future a bit.
> Asking this because type annotations are stated as completely optional for Python.
> And this use case will break this assumption.

Yes, if there are no __annotations__, then Data Classes would break. 
typing.NamedTuple has the same issue. We discussed it a little bit last 
week, but I don't think we came to any conclusions.

Since @dataclass ignores the value of the annotation (except for 
typing.ClassVar), it would continue to work if the type was present, buy 
maybe mapped to None or similar.


More information about the Python-Dev mailing list