input: Write a function to implement a 3D Vector class in Python that initializes with three coordinates x, y, and z and provides a string representation of the vector. If the given coordinates are valid, the function should return the string representation of the vector, otherwise return "Invalid vector".
  class Vector3D:
      def __init__(self, x, y, z):
          self.x = x
          self.y = y
          self.z = z
      
      def __str__(self):
          if isinstance(self.x, (int, float)) and isinstance(self.y, (int, float)) and isinstance(self.z, (int, float)):
              return "(" + str(self.x) + ", " + str(self.y) + ", " + str(self.z) + ")"
          else:
              return "Invalid vector"
  
  assert str(Vector3D(1, 2, 3))=="(1, 2, 3)"
  assert str(Vector3D(0, 0, 0))=="(0, 0, 0)"
  assert str(Vector3D(1.5, 2.5, 3.5))=="(1.5, 2.5, 3.5)"
  assert str(Vector3D("a", 2, 3))=="Invalid vector"
  assert str(Vector3D(1, "b", 3))=="Invalid vector"
output: 
  class Vector3D:
      def __init__(self, x, y, z):
          self.x = x
          self.y = y
          self.z = z
      
      def __str__(self):
          if isinstance(self.x, (int, float)) and isinstance(self.y, (int, float)) and isinstance(self.z, (int, float)):
              return "(" + str(self.x) + ", " + str(self.y) + ", " + str(self.z) + ")"
          else:
              return "Invalid vector"
  