[Python-3000] super() PEP (original) (raw)
Jim Jewett jimjjewett at gmail.com
Tue May 1 00:55:36 CEST 2007
- Previous message: [Python-3000] super() PEP
- Next message: [Python-3000] super() PEP
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 4/30/07, Lino Mastrodomenico <l.mastrodomenico at gmail.com> wrote:
One more thing: what do people think of modifying super so that when it doesn't find a method instead of raising AttributeError it returns something like "lambda *args, **kwargs: None"?
To me, the most important change is correctness -- super(this_class, self) over super(Name, self). Anything else is at least debatable.
But of all the shortcuts mentioned, this particular shortcut is easily the most valuable to me. At one point, I had even considered giving the super object a special method to upcall in this manner.
For What Its Worth, in my own code, when I don't know whether or not the next method exists, I will always be upcalling to the method of the same name, and passing all my arguments. Even changing the value of one argument would be strange enough to count as a special case worth spelling out.
Alas, Guido's recent opinion was "Don't do that". He suggested, at a minimum, inheriting from an ABC that provided the Nothing method.
Optionally this can be a constant (e.g. defaultmethod) defined somewhere so, if necessary, it's still possible to detect if the value of super.meth is a real method or the "fake" defaultmethod.
http://www.python.org/sf/1673203 is a patch for adding an identity method; I suspect a Nothing in the builtins would also make sense.
-jJ
- Previous message: [Python-3000] super() PEP
- Next message: [Python-3000] super() PEP
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]