Насколько я помню - он вызывается __new__ с экземпляром переданным в self. А затем производит его инициализацию теми параметрами которые были переданны в аргументах конструктора класса. В отличие от __new__, __init__ - не конструктор, он просто выполняет инициализацию.