[Python-ideas] Give regex operations more sugar

Brendan Barnwell brenbarn at brenbarn.net
Thu Jun 14 02:12:43 EDT 2018


On 2018-06-13 22:29, Steven D'Aprano wrote:
> On Wed, Jun 13, 2018 at 10:59:34PM +0200, Michel Desmoulin wrote:
>
>> > Attaching an entire module to a type is probably worse than
>> > adding a slew of extra methods to the type.
>> >
>>
>> Not my point.
>>
>> str.re would not be the re module, just a namespace where to group all
>> regex related string methods.
>
> That's what a module is :-)
>
> How would this work? If I say:
>
> "My string".re.match(...)
>
> if str.re is "just a namespace" how will the match function know the
> string it is to operate on?

	str.re can be a descriptor object which "knows" which string instance 
it is bound to.  This kind of thing is common in many libraries.  Pandas 
for example has all kinds of things like df.loc[1:3], 
df.column.str.startswith('blah'), etc.  The "loc" and "str" attributes 
give objects which are bound (in the sense that bound methods are bound) 
to the objects on which they are accessed, so when you use these 
attributes to do things, the effect takes account of on the "root" 
object on which you accessed the attribute.

	Personally I think this is a great way to reduce namespace clutter and 
group related functionality without having to worry about using up all 
the short or "good" names at the top level.  I'm not sure I agree with 
the specific proposal here for allowing regex operations on strings, but 
if we do do it, this would be a good way to do it.

-- 
Brendan Barnwell
"Do not follow where the path may lead.  Go, instead, where there is no 
path, and leave a trail."
    --author unknown


More information about the Python-ideas mailing list