Исправление Virtuos86, (текущая версия) :
Ну и мешанина. Тащемта конструктор и должен создавать инстанс.
Выделением памяти под обьект занимается не конструктор.
В Python, как в интерпретируемом ЯП с виртуальной машиной, память выделяет она. А «конструктором» класса в питоне, повторяюсь, будет метод __new__
. Конструктор по определению, как минимум, должен возвращать инстанс класса. __new__
этому условию удовлетворяет, __init__
нет.
Конструктор получает уже готовую память. Т.е обьект, но в неизвестном состоянии. Его задача - привести обьект в корректное начальное состояние.
В питоне говорить про память… Ну-ну… Если у вас после __new__
объект пребывает в неизвестном состоянии, то вы очень оригинально проектируете свои типы данных. Назначение метода __init__
— манки-патчинг готового инстанса базового класса, чтобы не заниматься патчингом конструктора, поскольку таковой уровень ковыряния в кишках класса обычно без надобности.
Исходная версия Virtuos86, :
Ну и мешанина. Тащемта конструктор и должен создавать инстанс.
Выделением памяти под обьект занимается не конструктор.
В Python, как в интерпретируемом ЯП с виртуальной машиной, память выделяет она. И «конструктором» класса в питоне, повторюсь будет метод __new__
. Конструктор по определению, как минимум, должен возвращать инстанс класса. __new__
этому условию удовлетворяет, __init__
нет.
Конструктор получает уже готовую память. Т.е обьект, но в неизвестном состоянии. Его задача - привести обьект в корректное начальное состояние.
В питоне говорить про память… Ну-ну… Если у вас после __new__
объект пребывает в неизвестном состоянии, то вы очень оригинально проектируете свои типы данных. Назначение метода __init__
— манки-патчинг готового инстанса базового класса, чтобы не заниматься патчингом конструктора, поскольку таковой уровень ковыряния в кишках класса обычно без надобности.