
Péter Szabó <ptspts@gmail.com> writes:
If Python had method decorators @final (meaning: it is an error to override this method in any subclass)
What use case is there for this? It would have to be quite strong to override the Python philosophy that “we're all consenting adults here”, and that the programmer of the subclass is the one who knows best whether a method needs overriding.
and @override (meaning: it is an error not having this method in a superclass)
I'm not sure I understand this one, but if I'm right this is supported now with: class FooABC(object): def frobnicate(self): raise NotImplementedError("Must be implemented in derived class") Or perhaps: class FooABC(object): def __init__(self): if self.frobnicate is NotImplemented: raise ValueError("Must override 'frobnicate' in derived class") frobnicate = NotImplemented But, again, what is the use case? Is it strong enough to take away the ability of the derived class's implementor (who is, remember, a consenting adult) to take what they want from a class and leave the rest? -- \ “We can't depend for the long run on distinguishing one | `\ bitstream from another in order to figure out which rules | _o__) apply.” —Eben Moglen, _Anarchism Triumphant_, 1999 | Ben Finney