Существует на самом деле класс Стека: http://java.sun.com/j2se/1.5.0/docs/api/java/util/Stack.html
, Если Вы не хотите использовать это, класс LinkedList ( http://java.sun.com/j2se/1.5.0/docs/api/java/util/LinkedList.html ) имеет addFirst
и addLast
и removeFirst
и removeLast
методы, делая его идеально подходящим для использования в качестве класса очереди или стека.
Поскольку кортежи неизменяемы, вы должны вместо этого переопределить __ new __
:
object .__ new __ (cls [, ...] )
Вызывается для создания нового экземпляра класс
cls
.__ new __ ()
- статический метод (в специальном корпусе, поэтому вам не нужно объявить это как таковое), который принимает класс, экземпляр которого был запрашивается в качестве первого аргумента. В оставшиеся аргументы - те, которые были переданы к выражению конструктора объекта (звонок в класс). Возврат значение__ new __ ()
должно быть новым экземпляр объекта (обычно экземпляр ofcls
).Типичные реализации создают новый экземпляр класса, вызвав метод суперкласса
__ new __ ()
с использованиемsuper (currentclass, cls) .__ new __ (cls [, ...])
с соответствующими аргументами и затем изменяя вновь созданный экземпляр по мере необходимости перед возвратом это.Если
__ new __ ()
возвращает экземплярcls
, затем новый экземпляр__ init __ ()
метод будет вызываться как__ init __ (self [, ...])
, где self - это новый экземпляр, а оставшиеся аргументы такие же, как были переданы в__ new __ ()
.Если
__ new __ ()
не возвращает экземплярcls
, затем новый метод экземпляра__ init __ ()
не будет
__ new __ ()
предназначен в основном для разрешения подклассов неизменяемых типов (например,int
,str
иликортеж
) для настройки создание экземпляра. Также обычно переопределено в пользовательских метаклассах в чтобы настроить создание класса.