[Python-ideas] @Override decorator

Shrey Desai shreydesai at me.com
Mon Jul 18 12:44:45 EDT 2016

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:
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.
With the advent of static typing from mypy:
Having the decorator could corroborate the fact that the given method overrides the parent method correctly (correct name + parameter list).
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.
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 <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?

Shrey Desai
https://github.com/shreydesai <https://github.com/shreydesai>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160718/dac7a22d/attachment-0001.html>

More information about the Python-ideas mailing list