I like it. Small remarks: If you use return "<%s : %s >" % (self.__class__.__name__, str(self)) You don't have to overload the method for every sub class and you have the "right" class name - which may be better for debugging. And what does this space character before the ">" do there? Florian