Vitja Makarov, 25.08.2011 18:11:
2011/8/24 Stefan Behnel:
Vitja Makarov, 24.08.2011 21:17:
I tried final classes:
2. In this example foo call is done through virtual table

cimport cython

@cython.final
cdef class Foo:
     cdef foo(self):
         print 'haha'

def test():
     cdef Foo a = Foo()
     a.foo()

   __pyx_t_1 = ((struct __pyx_vtabstruct_3yyy_Foo
*)__pyx_v_a->__pyx_vtab)->foo(__pyx_v_a); if (unlikely(!__pyx_t_1))
{__pyx_filename = __pyx_f[0]; __pyx_lineno = 12; __pyx_clineno =
__LINE__; goto __pyx_L1_error;}

Right, this is not implemented yet. Feel free to do so. Also see

http://trac.cython.org/cython_trac/ticket/474


3. I can't use final decorator for methods (error reported)

http://trac.cython.org/cython_trac/ticket/586

What is the prefered syntax keyword inline or final decorator?

"final" is the right option here.

They are orthogonal concepts. Only because you declare a method "final" does not mean you want to inline it, and just because you declare it "inline" does not (necessarily) mean that you cannot override it. Admittedly, the semantics of an overridable inline method may turn out to be somewhat obscure and error prone, so I think it's a good idea to let "inline" imply "final". But not the other way round.

Stefan
_______________________________________________
cython-devel mailing list
cython-devel@python.org
http://mail.python.org/mailman/listinfo/cython-devel

Reply via email to