Yeah most models actually should be defined this way--`eval` should just be a function (in general a `staticmethod` though in some cases a `classmethod` is okay) that is not bound to any particular instance of a model class.  It's sort of the barebones implementation of the function being modeled (and in the future may be replaceable with different implementations).  `__call__` in this case is more of an internal detail.