Patrick Down wrote:
> jeremito wrote:
> > I am writing a class that is intended to be subclassed. What is the
> > proper way to indicate that a sub class must override a method?
> >
> > Thanks,
> > Jeremy
>
> Decorators to the rescue?
>
> def must_override(f):
> def t(*args):
> raise NotImplementedError("You must override " + f.__name__)
> return t
>
> class Foo:
> @must_override
> def Bar(x,y): pass
>
> Foo().Bar()
>
> Traceback (most recent call last):
> File "testit.py", line 14, in ?
> Foo().Bar()
> File "testit.py", line 5, in t
> raise NotImplementedError("You must override " + f.__name__)
> NotImplementedError: You must override Bar
I'd think twice before using a decorator. This just seems less clear
to read than simply raising NotImplementedError, and the traceback
points into the decorator instead of the function that you really care
about.
--
http://mail.python.org/mailman/listinfo/python-list