Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.39 KB | None | 0 0
  1. # Реализовать класс стек pop, add, size (геттер), delete по индексу (
  2. # перегрузка встроенной хуйни), перегрузить + (соединияет два стека),
  3. # ну и получение элемента по индексу (встроенное) внутренее должно быть
  4. # private (насколько возможно)
  5.  
  6. from typing import List, Any, Optional
  7.  
  8.  
  9. class Stack:
  10.  
  11.     def __init__(self, lst: Optional[List[Any]] = None):
  12.         self._body = [] if lst is None else lst
  13.  
  14.     def push(self, x: Any) -> None:
  15.         self._body.append(x)
  16.  
  17.     @property
  18.     def size(self) -> int:
  19.         return len(self._body)
  20.  
  21.     def pop(self) -> None:
  22.         if self.size:
  23.             self._body.pop()
  24.  
  25.     def __delitem__(self, key: int):
  26.         if self.size > key:
  27.             self._body.pop(key)
  28.  
  29.     def __add__(self, other: 'Stack') -> 'Stack':
  30.         return Stack(self._body + other._body)
  31.  
  32.     def __str__(self) -> str:
  33.         return '{}'.format(self._body)
  34.  
  35.     def __getitem__(self, item: int) -> Any:
  36.         return self._body[item] if self.size > item else None
  37.  
  38.  
  39. def main():
  40.     s1 = Stack()
  41.     s1.push(1)
  42.     s1.push(2)
  43.     print(s1._body)
  44.     s2 = Stack()
  45.     print(s2._body)
  46.     s2.push(3)
  47.     print(s2._body)
  48.     print(s1[1])
  49.  
  50.  
  51. if __name__ == '__main__':
  52.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement