guido at 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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4