
On 1/31/17 2:13 AM, Roberto Martínez wrote:
Hi,
I find this type of code quite often:
class MyOverridedClass(MyBaseClass): def mymethod(self, foo, **kwargs): # Do something return super().mymethod(**kwargs)
What about creating a decorator to call super() after/before the overrided method? Something like that:
class MyOverridedClass(MyBaseClass): @extendsuper def mymethod(self, foo): # Do something
Sorry if this has already been proposed, I have not found anything similar in the list. With all of the possible details that need to be covered (before/after, what args to pass along, what to do with the return value), this doesn't seem like a good idea to me. The most common use of super is in __init__, where the value should not be returned, and the example given here returns the value, so right off the bat, the example is at odds with common usage.
The super call is just one line, and the decorator would be one line, so there's no savings, no improvement to expressivitiy, and a loss of clarity: -1. --Ned.