On May 8, 1:05 pm, John Gordon <gor...@panix.com> wrote: > I'm trying to come up with a scheme for organizing exceptions in > my application. > > Currently, I'm using a base class which knows how to look up the text > of a specific error in a database table, keyed on the error class name. > > The base class looks like this: > > class ApplicationException(Exception): > """Base class for application-specific errors.""" > > def get_message(self): > """Return the error message associated with this class name.""" > > class_name = self.__class__.__name__ > return UserMessage.objects.get(key=class_name).text > > And then I define a bunch of subclasses which all have different names: > > class QuestionTooShortError(NetIDAppsError): > """User entered a security question which is too short.""" > pass > > class QuestionTooLongError(NetIDAppsError): > """User entered a security question which is too long.""" > pass > > This scheme works, but I'd like to make it more streamlined. Specifically, > I'd like to group the classes underneath a parent class, like so: > > class Question(ApplicationException): > > class TooShort(ApplicationException): > pass > > class TooLong(ApplicationException): > pass > > This will make it easier in the future for organizing lots of sub-errors. > > My problem is this: the get_message() method in the base class only knows > the current class name, i.e. "TooShort" or "TooLong". But that's not > enough; I also need to know the outer class name, i.e. "Question.TooShort" > or "Question.TooLong". How do I get the outer class name?
This may be somewhat relevant to you, although it doesn't specifically answer your question for pre-3.3: http://www.python.org/dev/peps/pep-3155/ (Qualified name for classes and functions) -- http://mail.python.org/mailman/listinfo/python-list