On Fri, Jun 23, 2023 at 2:35 AM Jelle Zijlstra <jelle.zijls...@gmail.com>
wrote:

>
>
> El jue, 22 jun 2023 a las 8:22, Randolf Scholz (<randolf.sch...@gmail.com>)
> escribió:
>
>> Dataclasses should provide a way to ignore a type hinted attributes, and
>> not consider them as fields.
>>
>> For example, some attributes might be derived during `__post_init__` from
>> the values of the fields or other variables.
>>
>> If one wants to still type hint these attributes, one has to awkward
>> workarounds to avoid having dataclass interpret them as fields. (
>> https://stackoverflow.com/questions/76532816)
>>
>> I propose `NON_FIELDS` sentinel, analogous to `KW_ONLY`. (alternative
>> name suggestions welcome). when writing a dataclass, all attributes after
>> this sentinel are ignored and not considered fields.
>>
>> ```
>> @dataclass
>> class Foo:
>>     field0: int
>>     field1: int
>>
>>     _: KW_ONLY
>>
>>    fieldN: int
>>
>>     _: NON_FIELDS
>>
>>     attr0: int   # @dataclass will ignore this type hint.
>>
>
> How is this different from `attr0: int = field(init=False)`?
>

attr0 would be listed as a `field` in the introspectable attributes of the
dataclass in this way.
That is why I did not suggest that in my initial answer to Randolf on
stackoverflow:
https://stackoverflow.com/questions/76532816/type-hint-extra-attributes-not-fields/76533091#76533091

I like the dataclasses.attribute idea, though - (but it will also require
static type checking tools to review their
dataclass special casing - it looks like there is no escape from that).



>
>
>> ```
>>
>> Additionally one could consider adding an `attribute` typing construct,
>> such that `attr0: attribute[int]` would mark it as a non-field attribute.
>> _______________________________________________
>> Python-ideas mailing list -- python-ideas@python.org
>> To unsubscribe send an email to python-ideas-le...@python.org
>> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>> Message archived at
>> https://mail.python.org/archives/list/python-ideas@python.org/message/P67URFV2JJRFD6J5TXD44EEBO4IRTEYF/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
> _______________________________________________
> Python-ideas mailing list -- python-ideas@python.org
> To unsubscribe send an email to python-ideas-le...@python.org
> https://mail.python.org/mailman3/lists/python-ideas.python.org/
> Message archived at
> https://mail.python.org/archives/list/python-ideas@python.org/message/HS5E5XNHKLO47Q6UPF5QVUCIK2FR6VSF/
> Code of Conduct: http://python.org/psf/codeofconduct/
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/C5QJQT5YV7UOKFF57PWD4VSF4RWUDOSF/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to