no get function was defined, the property's doc string was
inaccessible. This was because the test for prop_get was made
*before* the test for a NULL/None object argument.
Also changed the property class defined in Python in a comment to test
for NULL to decide between get and delete; this makes it less Python
but then, assigning None to a property doesn't delete it!
self.__doc__ = doc
def __get__(self, inst, type=None):
- if self.__get is None:
+ if self.__get is NULL:
raise AttributeError, "unreadable attribute"
if inst is None:
return self
{
propertyobject *gs = (propertyobject *)self;
- if (gs->prop_get == NULL) {
- PyErr_SetString(PyExc_AttributeError, "unreadable attribute");
- return NULL;
- }
if (obj == NULL || obj == Py_None) {
Py_INCREF(self);
return self;
}
+ if (gs->prop_get == NULL) {
+ PyErr_SetString(PyExc_AttributeError, "unreadable attribute");
+ return NULL;
+ }
return PyObject_CallFunction(gs->prop_get, "(O)", obj);
}