Raymond Hettinger added the comment:

+1 for m.get(key[, default])
-1 for __contains__

The get() makes logical sense and it is perfectly reasonable to want a default 
value for a missing group.

The contains idea makes less sense and is problematic on several fronts.  "'a' 
in match" only works if the match object is not None but it looks like a 
traditional membership test.  Also, I think it will lead to confusion over 
whether contains is testing the key or the value:

  m = re.match('(?P<a>[ab])', 'a')
  'a' in m    # True
  'b' in m    # False

  m = re.match('(?P<a>[ab])', 'b')
  'a' in m    # True  
  'b' in m    # False

  m = re.match('(?P<a>[ab])', 'c')
  'a' in m    # TypeError
  'b' in m    # TypeError

IMO, it is better to leave out __contains__ and let people just use groupdict() 
where they know for sure that normal dict semantics apply.

----------
nosy: +rhettinger

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue29459>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to