2010/8/23 Raymond Hettinger <raymond.hettin...@gmail.com>: > > On Aug 23, 2010, at 1:13 PM, Benjamin Peterson wrote: > >> 2010/8/23 Michael Foord <fuzzy...@voidspace.org.uk>: >>> To me hasattr *looks* like a passive introspection function, and the fact >>> that it can trigger arbitrary code execution is unfortunate - especially >>> because a full workaround is pretty arcane.
hasattr(x, "y") doesn't look any more passive to me the x.y. > > Well said. The surprise to me in the OP's example was that > the property() was executed. Regular methods aren't run > by hasattr() so it's hard to remember that when writing code using hasattr(). Hard to remember compared to what? > > That is especially unfortunate because someone turning a regular > attribute into a property may be doing so long after client code has > been written (IIRC, that was a key use case for properties). > IOW, the user of the hasattr() may have had no way > of knowing that an exception could ever be raised > (because it is perfectly safe with regular attributes and methods). Better to raise an exception into unexpecting code that to have subtly different lookup rules between getattr and hasattr. -- Regards, Benjamin _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com