- super() no longer ignores data descriptors, except __class__. See
the thread started at
http://mail.python.org/pipermail/python-dev/2003-April/034338.html
diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py
index 4a9cc50..972e224 100644
--- a/Lib/test/test_descr.py
+++ b/Lib/test/test_descr.py
@@ -1989,7 +1989,7 @@
class F(E):
def meth(self, a):
- s = self.__super
+ s = self.__super # == mysuper(F, self)
return "F(%r)[%s]" % (a, s.__class__.__name__) + s.meth(a)
F._F__super = mysuper(F)
@@ -2025,6 +2025,21 @@
else:
raise TestFailed, "shouldn't allow super(D).__get__(C())"
+ # Make sure data descriptors can be overridden and accessed via super
+ # (new feature in Python 2.3)
+
+ class DDbase(object):
+ def getx(self): return 42
+ x = property(getx)
+
+ class DDsub(DDbase):
+ def getx(self): return "hello"
+ x = property(getx)
+
+ dd = DDsub()
+ vereq(dd.x, "hello")
+ vereq(super(DDsub, dd).x, 42)
+
def inherits():
if verbose: print "Testing inheritance from basic types..."