> You can also use the subsets function

I think, the better wording here is "you must" ;)

> Why do you think self.class is not a good way to go about this?

Code consistency, for example.