Overloading the ">>" operator in Python 2.2.1

Terry Reedy tjreedy at udel.edu
Thu Sep 12 08:57:26 EDT 2002

"Andy Elvey" <andy.elvey at paradise.net.nz> wrote in message
news:fhYf9.1418$b5.128061 at news02.tsnz.net...
> Hi all .
>    I'm using Python 2.2.1 under Win98.  I'm doing some experimenting
> parsing, and as part of that, I'm trying to overload the right-shift
> operator (>>) so that I can use it as follows (testing against a
> that I read in) -
>   a >> b   would mean  "a is followed by b" .
>    So,  you could have a function like seqtest("string_to_test" ,
> "foo">>"bar" ) , and that function would return true or false,
depending on
> whether foo was followed by bar.
>  (  I know it's possible to use regexes for this,  but being able to
> a sequence-testing operator like this would be useful .)
>     Many thanks in advance ......

You did not explicitly ask a question, but here's a possible answer

>>> class wierd(str):
...   def __rshift__(self,other):
...     print self, 'followed by', other
>>> foo = wierd('foo')
>>> bar = wierd('bar')
>>> foo>>bar
foo followed by bar

You cannot add attributes to built-in types.  You can only subclass
them (in 2.2+).

Terry J. Reedy

More information about the Python-list mailing list