Constructors in Python
__init__ is the initializer most people mean by constructor. It runs when you create the object: s = Student("Asha", 12). Inside, self.name = name stores fields. You do not call __init__ yourself. Student(...) does it. Forget self on the first parameter and you get TypeError.
__new__ actually creates the instance — advanced, skip unless they ask. Viva signature: def __init__(self, name, roll). Then one object on the board: print(s.name) → Asha.
Constructors in Python — output — 4. Box(4) calls __init__ and sets side.
__init__(self, ...) + one Student example.