1
2cimport cython
3
4@cython.final
5cdef class FinalClass:
6    """
7    >>> f = FinalClass()
8    >>> test_final_class(f)
9    Type tested
10
11    >>> try:
12    ...     class SubType(FinalClass): pass
13    ... except TypeError:
14    ...     print('PASSED!')
15    PASSED!
16    """
17
18cdef class NonFinalClass:
19    """
20    >>> class SubType(NonFinalClass): pass
21    >>> s = SubType()
22    """
23
24@cython.final
25cdef class FinalSubClass(NonFinalClass):
26    """
27    >>> f = FinalSubClass()
28    >>> test_non_final_class(f)
29    Type tested
30
31    >>> try:
32    ...     class SubType(FinalSubClass): pass
33    ... except TypeError:
34    ...     print('PASSED!')
35    PASSED!
36    """
37
38
39def test_final_class(FinalClass c):
40    print u"Type tested"
41
42def test_non_final_class(NonFinalClass c):
43    print u"Type tested"
44