extcmethod.pyx 569 Bytes
Newer Older
1 2 3
cdef class Spam:

    cdef int tons
4

5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
    cdef void add_tons(self, int x):
        self.tons = self.tons + x

    cdef void eat(self):
        self.tons = 0

    def lift(self):
        print self.tons

cdef class SuperSpam(Spam):

    cdef void add_tons(self, int x):
        self.tons = self.tons + 2 * x

def test():
20 21 22 23 24 25 26
    """
    >>> test()
    5
    0
    20
    5
    """
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
    cdef Spam s
    cdef SuperSpam ss
    s = Spam()
    s.eat()
    s.add_tons(5)
    s.lift()

    ss = SuperSpam()
    ss.eat()
    ss.lift()

    ss.add_tons(10)
    ss.lift()

    s.lift()