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

Reply via email to