On 17/11/2021 02.04, Abdur-Rahmaan Janhangeer wrote: > A simple question: why do we need field(default_factory ) in dataclasses? > > Why not make that field as an attribute return a function? > > Useful implementation examples / use cases appreciated.
It's an interesting question: We could define a list (or whatever) within __post_init__()! Greater minds than mine may care to comment on the theory that something defined as a dataclasses.field will be allocated as part of the class constructor, ie lower-cost. Whereas, something defined post-init will require extra process-time and storage-allocation. (?) Doesn't it already return a (evaluated) function? Remember: one is not limited to Python built-in or PSL types. Thus: def countdown(): return [ 10, 9, 8, 7, ..., "blast-off" ] ... launch_commentary:list = field( default_factory=countdown ) The use of default-values for mutables is something of a Python 'gotcha'. My use-case is that some wise-soul's decision to do things this way prevents me from falling into that debugging "slough of despond". (does such qualify as a "use case"?) -- Regards, =dn -- https://mail.python.org/mailman/listinfo/python-list