
guido@python.org wrote:
class A (autosuper):
def __init__ (self, a, b): print 'A.__init__' print a, b self.super(a, b)
def test (self, a, b): print 'A.test' print a, b self.super(a, b)
class B (A):
def __init__ (self): print 'B.__init__' self.super(1, 2) self.super.test(3, 4)
One more thing... What is the point of self.super.test(...)? When is that not the same as self.test(...)? What's the use case?
import autosuper class A (autosuper.autosuper): def __init__ (self, a, b): print 'A.__init__' print a, b self.super(a, b) def test (self, a, b): print 'A.test' print a, b self.super(a, b) class B (A): def __init__ (self): print 'B.__init__' self.super(1, 2) super(B, self).test(3, 4) def test (self, a, b): print 'B.test' self.super(a, b) B() ---------- Run ---------- B.__init__ A.__init__ 1 2 A.test 3 4 Output completed (0 sec consumed) - Normal Termination As you can see, B.test did *not* get called. By doing self.super.test, I'm guaranteeing that I'll only see attributes higher in the MRO. Whether it's a useful thing or not, it's something you can do now with super. Tim Delaney