On Apr 16, 3:28 am, "Daniel Nogradi" <[EMAIL PROTECTED]> wrote: > I am probably misunderstanding some basic issue here but this > behaviour is not what I would expect: > > Python 2.4 (#1, Mar 22 2005, 21:42:42) > [GCC 3.3.5 20050117 (prerelease) (SUSE Linux)] on linux2 > Type "help", "copyright", "credits" or "license" for more information.>>> > class mystr( str ): > > ... pass > ... > > >>> x = mystr( 'x' ) > >>> isinstance( x, mystr ) > True > >>> isinstance( x.strip( ), mystr ) > False > > Why is the strip( ) method returning something that is not a mystr > instance? I would expect all methods operating on a string instance > and returning another string instance to correctly operate on a mystr > instance and return a mystr instance. How would I achieve something > like this without manually copying all string returning methods from > str and stuffing the result to mystr( ) before returning?
class A(object): def __init__(self, s): self.s = s def strip(self): return 2 class mystr(A): pass x = mystr("x") print isinstance(x, mystr) print isinstance(x.strip(), mystr) -- http://mail.python.org/mailman/listinfo/python-list