[Tutor] subclassing strings

Eric Abrahamsen eric at abrahamsen.com
Wed Jan 9 05:26:54 CET 2008


Thanks both of you, that cleared a lot of things up.

On Jan 9, 2008, at 11:49 AM, Kent Johnson wrote:
>
> No, you can't access the actual byte array from Python and you can't  
> damage it.

I don't know a lick of C and probably never will, but I do like to  
know what it is, exactly, that I don't know, and this is nice. I'll  
stop worrying about stepping on the actual value of the strings.

On Jan 9, 2008, at 11:48 AM, Tiger12506 wrote:
> def __str__(self):
>  return self
> def __repr__(self):
>  return "'%s'" % self      #Notice this will give extra single quotes
> around string

Excellent, this was very helpful. I know about the str() vs .__str__()  
equivalence, but had never seen what these two functions were actually  
doing under the hood.

What I wasn't figuring out was passing the string value of my custom  
string class into the constructor of the actual str type, rather than  
rerouting it into a data attribute of my custom class. So now I've got  
this, for example:

class StampedString(str):
     def __init__(self, val):
         super(StampedString, self).__init__(val)
         import datetime
         self.timestamp = datetime.datetime.now()

so that this:
x = StampedString('This is a time-stamped string')
works exactly like a string, apart from the metadata.

At least, I think I've understood this correctly...

Thanks again for the interesting explanations.

Eric


More information about the Tutor mailing list