class Stack: def __init__(self): self._items = [] def push(self, item): self._items.append(item) def pop(self): if not self.is_empty(): return self._items.pop() raise IndexError("Stack is empty") def peek(self): if not self.is_empty(): return self._items[-1] raise IndexError("Stack is empty") def is_empty(self): return len(self._items) == 0 def size(self): return len(self._items) # Example Usage: my_stack = Stack() my_stack.push(10) my_stack.push(20) print(f"Stack size: {my_stack.size()}") print(f"Top element: {my_stack.peek()}") print(f"Popped: {my_stack.pop()}") print(f"Stack size after pop: {my_stack.size()}") print(f"Is stack empty? {my_stack.is_empty()}")