Основное различие между этими двумя методами состоит в том, что
__new__
обрабатывает создание объекта, а __init__
обрабатывает его инициализацию.__new__
вызывается автоматически при вызове имени класса (при создании экземпляра), тогда как __init__
вызывается каждый раз, когда экземпляр класса возвращается __new__
, передавая возвращаемый экземпляр в __init__
в качестве параметра self, поэтому даже если вы сохранили экземпляр где-нибудь глобально/статически и возвращали его каждый раз из __new__
, для него все-равно будет каждый раз вызываться __init__
.Из вышесказанного вытекает что сначала вызывается
__new__
, а потом __init__
@python_job_interview