How to extend an object?
DL Neil
PythonList at DancesWithMice.info
Sat Dec 21 01:00:04 EST 2019
On 21/12/19 2:50 pm, Greg Ewing wrote:
> On 21/12/19 1:59 am, Stefan Ram wrote:
>> I would like to add a method to a string.
>>
>> This is not possible in Python?
>
> It's not possible. Built-in classes can't have methods added
> to them.
>
> You can define your own subclass of str and give it whatever
> methods you want.
>
> But in your case:
>
>> for s in 'abc'.like( '(.)' ):
>
> I would recommend making it a stand-alone function instead,
> so that you would write
>
> for s in like('abc', '(.)'):
Contrarily: sub-classing str and making like() a method strikes me as
the way to go, particularly if the 'abc' disappears into the instance's
__init__() - and better still if the '(.)' may also be absorbed as a
class/instance attribute, and even more-so if like() is not the only
method/stand-alone function required for this category of strings...
but...
choose a self-documenting name for the class, and
choose a better-documenting name for the method.
instance = class( "abc" )
...
for s in instance.method():
is clean, self-documenting (or will be once you've done your thing),
easier to test (fewer args => easier assured testing).
--
Regards =dn
More information about the Python-list
mailing list