def METHOD_NAME(parent_class):
    """
    Creates the NumericSubset class dynamically, similar to subset_factory.
    """
    class NumericSubset(parent_class):
        """
        Subsets one of the columns to a specified range of numerical values.
        It may be the case that you wish to subset by another Query
        object, in this case it is better to use the Query join method.
        Parameters
        ----------
        col : str
            Name of the column to subset, should contain numbers
        low : float
            Lower bound of interval to subset on
        high : float
            Upper bound of interval to subset on
        """
        def __init__(self, parent, col, low, high):
            self.parent = parent
            self.col = col
            self.low = low
            self.high = high
            try:
                assert isinstance(self.low, numbers.Real) and isinstance(
                    self.high, numbers.Real
                )
            except AssertionError:
                raise TypeError("Low and/or High not and integer or float")
            Query.__init__(self)
        @property
        def column_names(self) -> List[str]:
            return self.parent.column_names
        def __getattr__(self, name):
            # Don't extend this to hidden variables, such as _df
            # and _len
            if name.startswith("_"):
                raise AttributeError
            return self.parent.__getattribute__(name)
        def _make_query(self):
            low = _makesafe(self.low)
            high = _makesafe(self.high)
            clause = "parent.{col} BETWEEN {low} AND {high}".format(
                col=self.col, low=low, high=high
            )
            sql = """
                        SELECT
                            *
                        FROM
                            ({parent}) AS parent
                        WHERE
                            {clause}
                       """.format(
                parent=self.parent.get_query(), clause=clause
            )
            return sql
        def __reduce__(self):
            """
            Returns
            -------
            A special object which recreates numeric subsets.
            """
            return _NumSubsetGetter(), (self.parent, self.col, self.low, self.high)
    return NumericSubset