[Python-ideas] A decorator to call super()
Joao S. O. Bueno
jsbueno at python.org.br
Tue Jan 31 15:55:08 EST 2017
Sure - thanks - I did not even consider the descriptor mechanism, as
I got focused in getting the equivalent from the __class__ cell
inside the decorator code.
And of course, now there is the "__init_subclass__" mechanism - a
mixin version using that was as straight forward as it can be as well.
On 31 January 2017 at 17:33, Ned Batchelder <ned at nedbatchelder.com> wrote:
> 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.
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
More information about the Python-ideas
mailing list