
On 6/23/2023 11:34 AM, Joao S. O. Bueno wrote:
On Fri, Jun 23, 2023 at 12:18 PM Eric V. Smith <eric@trueblade.com> wrote:
On Jun 23, 2023, at 9:34 AM, Joao S. O. Bueno <gwidion@gmail.com> wrote:
On Fri, Jun 23, 2023 at 2:35 AM Jelle Zijlstra <jelle.zijlstra@gmail.com> wrote:
El jue, 22 jun 2023 a las 8:22, Randolf Scholz (<randolf.scholz@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)
But it’s not clear (to me) why not being a field is desirable. Why is it important?
Can't know - not my design, it was Randolf's question. They might represent an internal state that should not be relayed on serialization or conversion, for example. I can imagine some scenarios where I'd want some instance attributes to be shorter lived and non-transient, although, I'd more likely build the class "manually" instead of a dataclass - or, more likely, put the dataclass under a wrapper layer that would handle the "perishable" states.
I think you can make dataclasses itself ignore the field by judicious use of `field` parameters. If there's some code that's looking through `dataclasses.fields` but wants to ignore some fields, irrespective of what dataclasses is doing, then I'd say it's on the caller to have a list of fields to ignore. But without knowing the use case, it's hard to say. Eric