summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-12-10 18:00:15 (GMT)
committerGuido van Rossum <guido@python.org>2001-12-10 18:00:15 (GMT)
commitb75ba918d6f8e9744c7da4660721a0058a6968a5 (patch)
tree087d9b233fb67d8e73013abd6264b32e742d825a
parent6048ce95a94ee4527799d7c2fe43ffa43fa64990 (diff)
downloadcpython-b75ba918d6f8e9744c7da4660721a0058a6968a5.zip
cpython-b75ba918d6f8e9744c7da4660721a0058a6968a5.tar.gz
cpython-b75ba918d6f8e9744c7da4660721a0058a6968a5.tar.bz2
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!
-rw-r--r--Objects/descrobject.c10
1 files 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);
}