[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