how to convert string function to string method?

Terry Reedy tjreedy at udel.edu
Mon Dec 7 13:04:03 EST 2009


Steven D'Aprano wrote:
> On Sun, 06 Dec 2009 22:47:48 -0800, Dr. Phillip M. Feldman wrote:
> 
>> I wrote a handy-dandy function (see below) called "strip_pairs" for
>> stripping matching pairs of characters from the beginning and end of a
>> string.  This function works, but I would like to be able to invoke it
>> as a string method rather than as a function.  Is this possible?
> 
> Not exactly. You can subclass string and add such a method:
> 
> class MyString(str):
>     def strip_pairs(self, ...):
>         ...
> 
> but then you have to convert every string to a MyString before you use 
> it. That way leads to madness.
> 
> Better to just use a function. Don't worry, you're allowed to mix 
> functional and OO code :)

Unlike certain other languages, Python is not designed around a fetish 
for calling all functions as methods. s.func(arg) is immediately 
translated to cls.func(s,arg) where cls is either the class of s or some 
superclass thereof. Directly writing mod.func(s,arg), where mod is some 
module, is just as good. Methods have three purposes: bundle several 
related functions in a class-specific namespace; inheritance; mapping of 
operations, like '+', to class-specific (special) methods. Modules are 
an alernative namespace bundle.

Terry Jan Reedy




More information about the Python-list mailing list