[EMAIL PROTECTED] wrote:
> I guess I don't understand what benefits come from using
> UserString instead of just str.

I hit send without remembering to include this kind of example:

from UserString import UserString as UserString
class MyString(UserString):
   def __init__(self, astr):
     UserString.__init__(self, astr)
     self.history = [astr]
     self.fix_ms()
   def update(self):
     if self.history[-1] != self.data:
       self.history.append(self.data)
   def fix_ms(self):
     self.data = self.data.replace('m', 'f')
     self.update()
   def fix_whitespace(self):
     self.data = "".join(c if c not in string.whitespace else '-'
                           for c in self.data.strip())
     self.update()

Now, you have a record of the history of the string, which may help you 
later

py> s = MyString('mail man')
py> s
'fail fan'
py> s.data
'fail fan'
py> s.history
['mail man','fail fan']
py> s.fix_whitespace()
py> s
'fail-fan'
py> s.history()
['mail man', 'fail fan', 'fail-fan']

A history of a str or instances or its subclasses make no sense because 
str is immutable. You may or may not want a history (I just made up this 
use case), but hopefully you see the utility in using regular classes 
for complex behavior instead of forcing an immutable built in type to do 
magic.

James

-- 
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to