Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 20, 2016 19:38:10

Jughead
Зарегистрирован: 2016-10-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализация стека и очереди на основе дека.

Здравствуйте. Будет класс дека Deque, в котором будут методы, типа pushFront/pushBack - добавить элемент в начало/конец списка, popFront/popBack - извлечь элемент из начала/конца списка, getFront/getBack - вернуть первый и последний элемент, size - кол-во элементов, clear - очистить список. И на основе этого родительского класса нужно создать класс стека Stack с методами push, pop, get, size, clear и класс очереди Queue с методами push, pop, get, size, clear. Так вот, как можно наследовать и переименовать функции из родительского класса в дочерний? Именно определенные функции, не все.

Офлайн

#2 Окт. 21, 2016 04:34:59

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Реализация стека и очереди на основе дека.

  
>>> class Deque:
...     
...     def pushFront(self, e):
...         print('pushFront', e)
...     
...     def popFront(self):
...         print('popFront')
...     
...     def pushBack(self, e):
...         print('pushBack', e)
...     
...     def popBack(self):
...         print('popBack')
... 
>>> class Stack(Deque):
...     
...     push = Deque.pushFront
...     pop = Deque.popFront
... 
>>> class Queue(Deque):
...     
...     push = Deque.pushBack
...     pop = Deque.popFront
... 
>>> st = Stack()
>>> st.push(1)
pushFront 1
>>> st.pop()
popFront
>>> 
>>> qu = Queue()
>>> qu.push(1)
pushBack 1
>>> qu.pop()
popFront
>>>

А для наследования можешь применить подъём к суперклассу
  
>>> class Deque:
...     
...     def pushFront(self, e):
...         print('pushFront', e)
...     
...     def popFront(self):
...         print('popFront')
...     
...     def pushBack(self, e):
...         print('pushBack', e)
...     
...     def popBack(self):
...         print('popBack')
... 
>>> class Stack(Deque):
...     
...     def __init__(self):
...         self.push = super().pushFront
...         self.pop = super().popFront
... 
>>> st = Stack()
>>> st.push(1)
pushFront 1
>>> st.pop()
popFront
>>>



Отредактировано py.user.next (Окт. 21, 2016 04:42:07)

Офлайн

#3 Окт. 21, 2016 10:20:27

Jughead
Зарегистрирован: 2016-10-20
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Реализация стека и очереди на основе дека.

py.user.next, спасибо вам, помогли.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version