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"
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-ov...) 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@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/