string methods of a str subclass

7stud bbxx789_05ss at yahoo.com
Mon Apr 16 11:58:51 CEST 2007


On Apr 16, 3:28 am, "Daniel Nogradi" <nogr... at gmail.com> 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)





More information about the Python-list mailing list