input: from typing import List
  
  class DoubleLinkedList:
      def __init__(self):
          self.head = None
  
      def append(self, new_data):
          new_node = Node(new_data)
          if self.head is None:
              self.head = new_node
          else:
              curr_node = self.head
              while curr_node.next is not None:
                  curr_node = curr_node.next
              curr_node.next = new_node
              new_node.prev = curr_node
  
      def prepend(self, new_data):
          new_node = Node(new_data)
          if self.head is None:
              self.head = new_node
              return
          new_node.next = self.head
          self.head.prev = new_node
          self.head = new_node
  
      def reverse(self):
          curr_node = self.head
          while curr_node:
              temp = curr_node.next
              curr_node.next = curr_node.prev
              curr_node.prev = temp
              curr_node = curr_node.prev
          if temp:
              self.head = temp.prev
              
      def traverse_forward(self):
          result = []
          curr_node = self.head
          while curr_node:
              result.append(curr_node.data)
              curr_node = curr_node.next
          return result
  
      def traverse_backward(self):
          result = []
          curr_node = self.head
          while curr_node and curr_node.next:
              curr_node = curr_node.next
          while curr_node:
              result.append(curr_node.data)
              curr_node = curr_node.prev
          return result
  
  # Test cases
  dll = DoubleLinkedList()
  dll.append(1)
  dll.append(2)
  dll.append(3)
  assert dll.traverse_forward() == [1, 2, 3]
  assert dll.traverse_backward() == [3, 2, 1]
  dll.prepend(0)
  assert dll.traverse_forward() == [0, 1, 2, 3]
  assert dll.traverse_backward() == [3, 2, 1, 0]
  dll.reverse()
  assert dll.traverse_forward() == [3, 2, 1, 0]
  assert dll.traverse_backward() == [0, 1, 2, 3]
output:     
  class Node:
      def __init__(self, data):
          self.data = data
          self.next = None
          self.prev = None
  