On Thu, 23 Jun 2005 12:25:58 -0700, Paul McGuire wrote: > But if you are subclassing str just so that you can easily print your > objects, look at implementing the __str__ instance method on your > class. Reserve inheritance for true "is-a" relationships. Often, > inheritance is misapplied when the designer really means "has-a" or > "is-implemented-using-a", and in these cases, the supposed superclass > is better referenced using a member variable, and delegating to it.
Since we've just be talking about buzzwords in another thread, and the difficulty self-taught folks have in knowing what they are, I don't suppose somebody would like to give a simple, practical example of what Paul means? I'm going to take a punt here and guess. Instead of creating a sub-class of str, Paul suggests you simply create a class: class MyClass: def __init__(self, value): # value is expected to be a string self.value = self.mangle(value) def mangle(self, s): # do work on s to make sure it looks the way you want it to look return "*** " + s + " ***" def __str__(self): return self.value (only with error checking etc for production code). Then you use it like this: py> myprintablestr = MyClass("Lovely Spam!") py> print myprintablestr *** Lovely Spam!!! *** Am I close? -- Steven -- http://mail.python.org/mailman/listinfo/python-list