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