String changing on the fly

John Hunter jdhunter at
Wed Oct 20 19:40:56 CEST 2004

>>>>> "John" == John Hunter <jdhunter at> writes:

Continuing the fun, you can define a new python class that inherits
from string, but overrides the "convert me to a string representation"
method __str__ to evaluate itself in the context of the global

import re

class PerlString(str):
    def __str__(self):

        rgx = re.compile('\$(\w+)')
        fmt = re.sub('\$(\w+)', self.dollar_replace, self)
        return fmt%globals()

    def dollar_replace(self, matchobj):
        return '%(' + + ')s'

s = PerlString('$first paid cost $T dollars')

T = 2
first = 'John'
print s

T = 5
first = 'Bill'
print s

More information about the Python-list mailing list