On 22/02/2014 21:26, Tim Delaney wrote:
On 23 February 2014 02:29, Nick Coghlan <[email protected] <mailto:[email protected]>> wrote:On 22 Feb 2014 22:15, "Stephen J. Turnbull" <[email protected] <mailto:[email protected]>> wrote: > Antoine Pitrou writes: > > Chris Angelico <[email protected] <mailto:[email protected]>> wrote: > > > hasattr(x,"y") <-> (x.y or True except AttributeError: False) > > But it's not the same. hasattr() returns a boolean, not an arbitrary > > value. > I think he meant > hasattr(x,"y") <-> (x.y and True except AttributeError: False) With PEP 463, the explicit equivalent of hasattr() would be something like : hasattr(x,"y") <-> (bool(x.y) or True except AttributeError: False) That would work, but I think I'd prefer: hasattr(x,"y") <-> bool(x.y or True except AttributeError: False)Makes it clearer IMO that the entire expression will always return a boolean.
This also works: hasattr(x,"y") <-> (lambda v: True)(x.y) except AttributeError: False Which is less obscure is a matter of judgement.
_______________________________________________ Python-Dev mailing list [email protected] https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com
