Currently data adapters use hasattr() to check for the existence of attributes on the persistent object, however hasattr fails if any Exception is thrown in the property/attribute.
This makes debugging difficult as it can hide errors in properties by treating them as non-existent attributes instead of throwing the correct exception.
An alternative approach would be to use something like the following, explicitly checking for AttributeError:
print "Doesn't exist"
This error is also present in the SQLAlchemy data adapter where it hides any DetachedInstanceError exceptions that are thrown when trying to access out of session objects.
Good reference article: http://stackoverflow.com/questions/610883/how-to-know-if-an-object-has-an-attribute-in-python
does not work for platforms like AppEngine because NDB raises this exception if the property wasn't set for a particular object. This does not allow us to distinguish between a non existent properties vs not set properties.
SQLAlchemy might deal with it differently and it might be a per adapter solution
potential fix for #11
some cleanup of adapter code for #11