input: Write a function to create a doubly linked-list in Python that supports both forward and backward traversal. The function should include methods to append nodes at the end and prepend nodes at the beginning of the list. Additionally, include a method to reverse the list.
  assert isinstance(DoubleLinkedList(), DoubleLinkedList)
  assert isinstance(DoubleLinkedList().append(5), type(None))
  assert isinstance(DoubleLinkedList().prepend(5), type(None))
  assert isinstance(DoubleLinkedList().reverse(), type(None))
output: class Node:
      def __init__(self, data):
          self.data = data
          self.next = None
          self.prev = None
  
  class DoubleLinkedList:
      def __init__(self):
          self.head = None
          self.tail = None
  
      def append(self, data):
          new_node = Node(data)
          if self.tail is None:
              self.head = self.tail = new_node
          else:
              new_node.prev = self.tail
              self.tail.next = new_node
              self.tail = new_node
  
      def prepend(self, data):
          new_node = Node(data)
          if self.head is None:
              self.head = self.tail = new_node
          else:
              new_node.next = self.head
              self.head.prev = new_node
              self.head = new_node
  
      def reverse(self):
          current = self.head
          while current:
              current.next, current.prev = current.prev, current.next
              current = current.prev
          self.head, self.tail = self.tail, self.head