code: def class_param_names(cls, hidden=True):
          
          param_names = set(
              k for (k, v) in cls.__dict__.items()
              if isinstance(v, Parameter)
          )
          for parent in cls.__bases__:
              if hasattr(parent, 'class_param_names'):
                  param_names |= parent.class_param_names(hidden=hidden)
  
          if not hidden:
              param_names = set(n for n in param_names if not n.startswith('_'))
          return param_names
docs: Return the names of all class parameters.
  
          :param hidden: if ``False``, excludes parameters with a ``_`` prefix.
          :type hidden: :class:`bool`
          :return: set of parameter names
          :rtype: :class:`set`