MonkeeSage wrote: > I know that python doesn't allow extending built-in objects like the > str class; but you can subclass them using a class of the same name and > thus shadow them to get the same general effect (albeit you have to use > the explicit constructor rather than literals). > > class str(str): > def display(self): > print self > str('blah').display() > > I was just playing around and realized that assigning to > __builtins__.str (or if you prefer sys.modules['__builtin__'].str) has > the same effect. > > class mystr(str): > def display(self): > print self > __builtins__.str = mystr > str('blah').display() > > So that made me wonder...couldn't python (in theory) allow for literals > to use extended classes by using the object in __builtins__.<class> as > the class for literals? By default it would be the standard base class, > but it could also be a custom subclass. Would that be possible / easy / > worthwhile to do? > Unfortunately the literals are interpreted during bytecode generation, before the compiled program is available, and your modifications to __builtns__ haven't been made, so the answer is "no", I'm afraid.
regards Steve -- Steve Holden +44 150 684 7255 +1 800 494 3119 Holden Web LLC/Ltd http://www.holdenweb.com Skype: holdenweb http://holdenweb.blogspot.com Recent Ramblings http://del.icio.us/steve.holden -- http://mail.python.org/mailman/listinfo/python-list