input: Write a function to calculate the maximum, minimum, and mean number of elements in a given string. The function should return a tuple containing these three values. If the string is empty, it should return a tuple of three `None` values.
  
  
  def get_stats_for_string(string):
      if not string:
          return (None, None, None)
      num_elements = len(string)
      max_element = max(string)
      min_element = min(string)
      mean_element = sum(string) / num_elements
      return (max_element, min_element, mean_element)
  
  assert get_stats_for_string("abcdef") == ('f', 'a', (ord('a') + ord('b') + ord('c') + ord('d') + ord('e') + ord('f')) / 6)
  assert get_stats_for_string("hello") == ('o', 'e', (ord('h') + ord('e') + ord('l') + ord('l') + ord('o')) / 5)
  assert get_stats_for_string("") == (None, None, None)
  
output: def get_stats_for_string(string):
      if not string:
          return (None, None, None)
      num_elements = len(string)
      max_element = max(string)
      min_element = min(string)
      mean_element = sum(ord(char) for char in string) / num_elements
      return (max_element, min_element, mean_element)