diff options
author | Guido van Rossum <guido@python.org> | 2001-12-10 18:00:15 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2001-12-10 18:00:15 (GMT) |
commit | b75ba918d6f8e9744c7da4660721a0058a6968a5 (patch) | |
tree | 087d9b233fb67d8e73013abd6264b32e742d825a | |
parent | 6048ce95a94ee4527799d7c2fe43ffa43fa64990 (diff) | |
download | cpython-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.c | 10 |
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); } |