[Python-ideas] @Override decorator

Wes Turner wes.turner at gmail.com
Mon Jul 18 14:26:04 EDT 2016


It could also be useful to have @override decorator functionality in
zope.interface

http://zopeinterface.readthedocs.io/en/latest/verify.html

zope.interface supports interface verification at test and runtime.

AAIU,  @override would raise an Exception:
- a) when a subclass specifies @override for a method not defined in a
superclass
- b) when the argspecs are different

AFAIU, a)-like functionality does not yet exist in zope.interface

On Jul 18, 2016 1:45 PM, "Shrey Desai" <shreydesai at me.com> wrote:

> Python Ideas,
>
> While working on some object-oriented projects in Java, I noticed that
> Python does not have an *@override* decorator for methods that are
> derived from a parent class but overridden for the unique purposes of a
> base class. With the creation of the *@abstractmethod* decorator, the
> override decorator could follow in clearly distinguishing the logic and
> design between parent/base classes.
>
> Why I would think an override decorator might be useful:
>
>    1. For other people reading the code, it would be great to distinguish
>    between methods that are unique to a class and methods that are inherited
>    from a parent class. Not all methods inherited might be overridden, so
>    keeping track of which inherited methods are overridden and which are not
>    would be nice.
>    2. With the advent of static typing from mypy:
>       1. Having the decorator could corroborate the fact that the given
>       method overrides the parent method correctly (correct name + parameter
>       list).
>       2. When the parent class changes, such as the name or parameter
>       list of an abstract method, the children classes should be updated as well.
>       mypy could easily target the methods that need to be altered with the
>       correct method signature.
>       3. If you don’t have an override decorator and overrode a parent
>       method, then there could be some error complaining about this. This would
>       be extremely useful to prevent accidental errors.
>
>
> There is some interest for this as expressed on Stack Overflow (
> http://stackoverflow.com/questions/1167617/in-python-how-do-i-indicate-im-overriding-a-method)
> and some people have also made packages for this, but having it in the
> standard distribution would be nice. Thoughts?
>
> Sincerely,
> Shrey Desai
> https://github.com/shreydesai
>
> _______________________________________________
> 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/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160718/02bf0e90/attachment.html>


More information about the Python-ideas mailing list