@cdeil I realize now that some of the documentation did not keep up with changes in the code triggered by reviews, new.rst is one of them. There was a request to make ndim and outdim properties and I also moved them to the base class. So they are passed now to the base class constructor. Here's how your example looks now:

from astropy.models import models, parameters

class Line(models.ParametricModel):
    parnames = ['slope', 'intercept']    
    def __init__(self, slope, intercept, paramdim=1):
        self.linear = True
        self._slope = parameters._Parameter(name='slope', val=slope, mclass=self, paramdim=paramdim)
        self._intercept = parameters._Parameter(name='intercept', val=intercept, mclass=self, paramdim=paramdim)
        models.ParametricModel.__init__(self, self.parnames, ndim=1, outdim=1, paramdim=paramdim)
        
    def eval(self, x, params):
        return params[0] * x + params[1]
    def __call__(self, x):
        x, format = models._convert_input(x, self.paramdim)
        result = self.eval(x, self.psets)
        return models._convert_output(result, format)

model = Line(slope=1, intercept=1)