Curriculum
In this tutorial, you’ll learn how to use the Python __init__() method to initialize object’s attributes.
When you create a new object of a class, Python automatically calls the __init__() method to initialize the object’s attributes.
Unlike regular methods, the __init__() method has two underscores (__) on each side. Therefore, the __init__() is often called dunder init. The name comes abbreviation of the double underscores init.
The double underscores at both sides of the __init__() method indicate that Python will use the method internally. In other words, you should not explicitly call this method.
Since Python will automatically call the __init__() method immediately after creating a new object, you can use the __init__() method to initialize the object’s attributes.
The following defines the Person class with the __init__() method:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
if __name__ == '__main__':
person = Person('John', 25)
print(f"I'm {person.name}. I'm {person.age} years old.")
When you create an instance of the Person class, Python performs two things:
Person class by setting the object’s namespace such as __dict__ attribute to empty ({}).__init__ method to initialize the attributes of the newly created object.Note that the __init__ method doesn’t create the object but only initializes the object’s attributes. Hence, the __init__() is not a constructor.
If the __init__ has parameters other than the self, you need to pass the corresponding arguments when creating a new object like the example above. Otherwise, you’ll get an error.
The __init__() method’s parameters can have default values. For example:
class Person:
def __init__(self, name, age=22):
self.name = name
self.age = age
if __name__ == '__main__':
person = Person('John')
print(f"I'm {person.name}. I'm {person.age} years old.")
Output
I‘m John. I’m 22 years old.
In this example, the age parameter has a default value of 22. Because we don’t pass an argument to the Person(), the age uses the default value.
Â