This is an archived version of the course. Please see the latest version of the course.

Constructor

Let us first look at the __init__() method. The double underscores on both sides is a Python convention that indicates that this is a magic method that does special things. They are called magic or dunder methods (dunder == double underscores). We will see more of these later.

1
2
3
4
5
6
7
class Person:
    def __init__(self, firstname, lastname, age):
        self.firstname = firstname
        self.lastname = lastname
        self.age = age

person = Person("Josiah", "Wang", 20)  # invoking the constructor 

__init__() acts as the constructor. When you create a class instance (Line 7), Python will create a new object in a memory heap, and execute the __init__() method.

The parameter self is similar to the this pointer in C++. In Python, when you create a new instance with Person() in Line 7, what really happens in the background is that a new object is created and assigned to self. To make it more concrete, below is (most likely) what goes on in the background. Please DO NOT write such code – this is just for illustrative purposes!!

# new object of type Person created in heap, and assigned to the variable self
self = object.__new__(Person)

# The __init__() method for class Person is invoked
Person.__init__(self, "Josiah", "Wang", 20)

return self

So self is a reference to the new Person instance that Python has just allocated in heap memory.