[Python-Dev] [Python-3000] Pre-pre PEP for 'super' keyword (original) (raw)

Jim Jewett jimjjewett at gmail.com
Sun Apr 29 23:25:53 CEST 2007


On 4/29/07, Tim Delaney <tcdelaney at optusnet.com.au> wrote:

I've been intending to write up a PEP for fixing super, but I haven't had time to get to it.

Calvin Spealman has the most recent draft. I hope he will incorporate this into his draft.

1. 'super' becomes a keyword, that returns a super object for the instance method currently being executed.

So it is a "keyword" in the sense that None is a keyword; not in the stronger sense that "if" is a keyword?

4. super objects are callable, and calling them will execute the super method with the same name as the instance method currently being executed. Lookup of this method occurs when the instance method is entered.

class A(object): def f(self): pass class B(A): def f(self): super() # Calls A.f(self)

If you want name lookup to occur at the time of the call, you can explicitly specify the method name (just like with any other super attribute):

class A(object): def f(self): pass class B(A): def f(self): super.f() # Calls A.f(self)

As long as you can be explicit, should the shortcut be a full shortcut? That is,

def f(self, a, b=c, *args, **kwargs):
    super()    # passes the exact arglist that f got

vs

def __init__(self, myvar, passed_var):
    super.__init__(self, passed_var)    # flags that you are

changing the args

-jJ



More information about the Python-Dev mailing list