'Since getting the description can be expensive (require module loads), we defer
this until someone actually wants to use it (i.e. show help for the command)'

def __getattribute__(self, name):

    if (name == 'description'):
        if self._description:
            self.description = (self._description() if callable(self._description) else self._description)
            self._description = None
    return object.__getattribute__(self, name)
