Cleaner is in the eye of the beholder.
Personally I think that it makes a lot of sense to have a clear distinction between class methods and object methods. For instance it is obvious that a class called File should do things like open files and return the associated object. But it makes no sense to me to ask a file object to open other files. But that means that a file object should not inherit from File. In which case the natural implementation is to have a prototypical file which has no real file associated with it. Which "feels" wrong to me.
But different strokes for different folks. In the end either object model works.