[Python-ideas] @Override decorator
tjreedy at udel.edu
Mon Jul 18 18:36:23 EDT 2016
On 7/18/2016 12:44 PM, Shrey Desai 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.
If you mean 'override' to have some actual function, then it is not
clear to me. If the 'decorator' is strictly a comment, why not use a
> 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
> and some people have also made packages for this, but having it in the
> standard distribution would be nice. Thoughts?
> Shrey Desai
> Python-ideas mailing list
> Python-ideas at python.org
> Code of Conduct: http://python.org/psf/codeofconduct/
Terry Jan Reedy
More information about the Python-ideas