Форум сайта python.su
py.user.nextВ литературе их чаще всего называют фабриками базовых типов, если я не ошибаюсь. Могу точно глянуть.
Конструкторы в питоне - это list(), dict()
Офлайн
py.user.next, приведите пожалуйста ссылку на источник, который утверждает, что конструктор должен создавать объект.
В объектно-ориентированном программировании конструктор класса (от англ. constructor) — специальный блок инструкций, вызываемый при создании объекта.Wikipedia
A constructor is a kind of member function that initializes an instance of its class. A constructor has the same name as the class and no return value.MSDN
Офлайн
Метод __init__ вызывается сразу после создания экземпляра класса.
Офлайн
cutwater
риведите пожалуйста ссылку на источник, который утверждает, что конструктор должен создавать объект
The constructor builds a list whose items are the same and in the same order as iterable‘s items.
In class-based object-oriented programming, a constructor (abbreviation: ctor) in a class is a special type of subroutine called to create an object. It prepares the new object for use, often accepting arguments that the constructor uses to set required member variables.
Memory organization
In Java, C# and VB .NET the constructor creates objects in a special memory structure called heap for reference types. Value types (such as int, double etc.), are created in a sequential structure called stack.
Отредактировано py.user.next (Март 11, 2017 22:15:56)
Офлайн
cutwaterНу да, вы правы. И именно __new__ принимая данные для создания нового объекта является конструктором.
Поскольку если к примеру говорить о С++, то объект класса создается при помощи оператора new, который выделяет память для объекта
Офлайн
cutwaterИМХО, конструктор именно статический метод, создающий объект. В Каком ООП ЯП это не так?
должен создавать объект.
Офлайн
py.user.next
И для конструктора есть обратная функция - деструктор. А что делает деструктор? Удаляет объект.
In object-oriented programming, a destructor (dtor) is a method which is automatically invoked when the object is destroyed.Wikipedia
FishHook
ИМХО, конструктор именно статический метод, создающий объект. В Каком ООП ЯП это не так?
Отредактировано cutwater (Март 11, 2017 22:20:24)
Офлайн
cutwater
Что Вы в си вцепились? Я же говорю. Определения СИ вообще никак не соосны с ООП. Там народ что хочет то так и называет. Если я не ошибаюсь, то каноничным с точки зрения создателей ООП был все же SmallTalk. Туда и надо таращиться. Но вот лень. Ибо помер он давно
Офлайн
cutwaterОсвобождается место в памяти, которое он занимает и удаляется ссылка из ссылочной таблицы. В питоне оператор del это делает. del отвязывает имя от ссылки на объект, затем сборщик мусора потом, когда будет удобное время, находит этот объект, к которому никто не обращается нигде, освобождает память и удаляет ссылку.
Что подразумевается под удалением объекта? Если ваше понимание удаления объекта включает в себя освобождение занимаемой им памяти, то Ваше утверждение не верно, как минимум для С++.
Отредактировано py.user.next (Март 11, 2017 22:22:48)
Офлайн
cutwaterЭто не я добавил, это вытекает из определения. Любой метод статический, пока нет ссылки на объект. Поэтому создать объект может только статический метод. Назовем статический метод, который создает новый объект конструктором, и вот вам конструктор, в любом ООП языке.
Вау, Вы уже добавили понятие “статический” в определение конструктора.
Офлайн