Vitja Makarov, 30.08.2011 18:39:
2011/8/30 Stefan Behnel:
Robert Bradshaw, 30.08.2011 18:18:
On Tue, Aug 30, 2011 at 9:14 AM, Vitja Makarov wrote:
What about final classes with cpdef methods?
@cython.final
class Foo:
cpdef bar(self):
pass
Should that raise an error?
That should be perfectly fine.
Well, the 'final' decorator shouldn't work on normal Python classes.
Regarding extension types, CPython has a way of declaring them 'final' with
a type flag, which effectively prevents them from being subclassed in
Python. So the above works as just fine for cdef classes.
Ok. So final class could have cpdef methods but non-final extension
type couldn't, am I right?
All extension types can have cpdef methods, be they final or not. For final
classes, cpdef methods simply mean that they have a Python wrapper and will
otherwise be called directly when called from Cython.
Actually, for cpdef methods in final classes, we can even drop the override
check in the DefNode wrapper. I don't think that currently happens.
Stefan
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel