Data Classes in Python | Set 5 (post-init)
Prerequisite: Data Classes in Python | Set 4
In this post, we will discuss how to modify values of some attributes during object creation without coding it in
__init__() by using post-init processing.
__post_init__(): This function when made, is called by in-built __init__() after initialization of all the attributes of DataClass. Basically, object creation of DataClass starts with
__init__() (constructor-calling) and ends with
__post__init__() (post-init processing).
This feature is very handy at times when certain attributes are dependent on the parameters passed in the
__init__() but do not get their values directly from them. That is, they get their values after performing some operation on a subset of arguments received in the constructor.
Continuing the same example we’ve been seeing in this series of articles, suppose there is an attribute called
author_name which gets its value from the profile handle to name mapping in the defined dictionary
author_name is dependent on profile handle which
author attribute receives, so using
__post_init__() should be an ideal choice this case.
GfgArticle(title=’DataClass’, language=’Python3′, author=’vibhu4agarwal’, author_name=’Vibhu Agarwal’, upvotes=0)
default_factory be an alternative?
default_factory accepts zero argument function or callable, so it can’t receive any arguments and return a value after performing some operations on them.