Constructors in Python (original) (raw)

Last Updated : 8 Jun, 2026

Constructors are special methods used to initialize objects when they are created from a class. Object creation and initialization are handled through the __new__() and __init__() methods. Constructors help assign initial values to object attributes and prepare objects for use.

When an object is created:

__new__() Method

This method is responsible for creating a new instance of a class. It allocates memory and returns the new object. It is called before __init__.

**Syntax:

Python `

class ClassName: def new(cls, parameters): instance = super(ClassName, cls).new(cls) return instance

`

To learn more, please refer to this article: __new__

__init__() Method

This method initializes the newly created instance and is commonly used as a constructor in Python. It is called immediately after the object is created by __new__ method and is responsible for initializing attributes of the instance.

**Syntax:

Python `

class ClassName: def init(self, parameters): self.attribute = value

`

**Note: It is called after __new__ and does not return anything (it returns None by default).

To learn more, please refer to this article: __init__

Differences Between __init__ and __new__

Feature __new__() __init__()
Purpose Creates an object Initializes an object
Called When Before object creation completes After object creation
Return Value Must return an object instance Returns None
Usage Rarely overridden Commonly overridden
Typical Use Case Singleton, immutable objects Setting attribute values

Types of Constructors

Constructors can be of two types.

1. Default Constructor

A default constructor does not take any parameters other than self. It initializes the object with default attribute values.

Python `

class Car: def init(self):

    #Initialize the Car with default attributes
    self.make = "Toyota"
    self.model = "Corolla"
    self.year = 2020

Creating an instance using the default constructor

car = Car() print(car.make) print(car.model) print(car.year)

`

Output

Toyota Corolla 2020

**Note: If no constructor is defined in a class, Python automatically provides a default constructor that creates the object without initializing custom attributes.

**Explanation:

2. Parameterized Constructor

A parameterized constructor accepts arguments to initialize the object's attributes with specific values.

Python `

class Car: def init(self, make, model, year):

    #Initialize the Car with specific attributes.
    self.make = make
    self.model = model
    self.year = year

Creating an instance using the parameterized constructor

car = Car("Honda", "Civic", 2022) print(car.make) print(car.model) print(car.year)

`

**Explanation: