input: Write a class in Python that can find the median of an unsorted list of numbers. The class should have an add method to add numbers to the list and a find_median method to find and return the median. If the list is empty, find_median should return None.
  
  
  class MedianFinder:
      def __init__(self):
          self._data = []
   
      def add(self, num):
          self._data.append(num)
   
      def find_median(self):
          if not self._data:
              return None
          data = sorted(self._data)
          n = len(data)
          return (data[(n-1)//2] + data[n//2])/2
  
  # Test cases
  median_finder = MedianFinder()
  assert median_finder.find_median() == None
  
  median_finder.add(5)
  median_finder.add(10)
  assert median_finder.find_median() == 7.5
  
  median_finder.add(0)
  median_finder.add(20)
  assert median_finder.find_median() == 7.5
  
  median_finder.add(7)
  assert median_finder.find_median() == 7.5
  
output: 
  class MedianFinder:
      def __init__(self):
          self._data = []
   
      def add(self, num):
          self._data.append(num)
   
      def find_median(self):
          if not self._data:
              return None
          data = sorted(self._data)
          n = len(data)
          return (data[(n-1)//2] + data[n//2])/2
  