From b75ba918d6f8e9744c7da4660721a0058a6968a5 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 10 Dec 2001 18:00:15 +0000 Subject: 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! --- Objects/descrobject.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Objects/descrobject.c b/Objects/descrobject.c index c5e793d..8506302 100644 --- a/Objects/descrobject.c +++ b/Objects/descrobject.c @@ -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); } -- cgit v0.12