Commit 368a587c authored by Guido van Rossum's avatar Guido van Rossum

property_descr_get(): Fix a curious bug in the property() type: when

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!
parent 5db6fa69
......@@ -911,7 +911,7 @@ PyWrapper_New(PyObject *d, PyObject *self)
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
......@@ -963,14 +963,14 @@ property_descr_get(PyObject *self, PyObject *obj, PyObject *type)
{
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);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment