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.
- Data Classes in Python | Set 4 (Inheritance)
- Data Classes in Python | An Introduction
- Data Classes in Python | Set 2 (Decorator Parameters)
- Data Classes in Python | Set 6 (interconversion to and from other datatypes)
- Data Classes in Python | Set 3 (dataclass fields)
- Abstract Classes in Python
- Python Classes and Objects
- Python | Data Augmentation
- Python for Data Science
- Python Data Types
- Python | Pandas Series.data
- Exploratory Data Analysis in Python | Set 2
- Python | Data visualization using Bokeh
- Python | Pandas Index.data
- Inbuilt Data Structures in Python
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.