Well what do you know. The Python implementation contained the same
bug as the C code. :-(
diff --git a/Objects/descrobject.c b/Objects/descrobject.c
index 4022e89..54c0347 100644
--- a/Objects/descrobject.c
+++ b/Objects/descrobject.c
@@ -911,10 +911,10 @@
self.__doc__ = doc
def __get__(self, inst, type=None):
- if self.__get is None:
- raise AttributeError, "unreadable attribute"
if inst is None:
return self
+ if self.__get is None:
+ raise AttributeError, "unreadable attribute"
return self.__get(inst)
def __set__(self, inst, value):