Mike Krell wrote: > I'm running into problems trying to override __str__ on the path class > from Jason Orendorff's path module > (http://www.jorendorff.com/articles/python/path/src/path.py). > > My first attempt to do this was as follows: > > ''' > class NormPath(path): > def __str__(self): > return 'overridden __str__: ' + path.__str__(self.normpath()) > ''' > > The problem is that the override is not invoked unless str() is called > explictly, as indicated by the test program and its output below: > > ''' > from normpath import NormPath > np = NormPath('c:/mbk/test') > print 'np: "%s"' % np > print 'str(np): "%s"' % str(np) > print np / 'appendtest' > > > np: "c:/mbk/test" > str(np): "overridden __str__: c:\mbk\test" > c:/mbk/test\appendtest > '''
With from path import path class NormPath(path): def __str__(self): return 'overridden __str__: ' + path.__str__(self.normpath()) np = NormPath('c:/mbk/test') print 'np: "%s"' % np print 'str(np): "%s"' % str(np) print np / 'appendtest' I get np: "overridden __str__: c:/mbk/test" str(np): "overridden __str__: c:/mbk/test" overridden __str__: overridden __str__: c:/mbk/test/appendtest Are you using the latest version of the path module? Older versions implied a Path() call in the __div__() operator which would explain at least the output you get for print np / 'appendtest' Peter -- http://mail.python.org/mailman/listinfo/python-list