class A: def append(self, x): print u"appending", x return x class B(list): def append(self, *args): for arg in args: list.append(self, arg) cdef class C: """ >>> c = C(100) appending 100 """ def __init__(self, value): self.append(value) cdef append(self, value): print u"appending", value return value def test_append(L): """ >>> test_append([]) None None None got error [1, 2, (3, 4)] >>> _ = test_append(A()) appending 1 1 appending 2 2 appending (3, 4) (3, 4) got error >>> test_append(B()) None None None None [1, 2, (3, 4), 5, 6] """ print L.append(1) print L.append(2) print L.append((3,4)) try: print L.append(5,6) except TypeError: print u"got error" return L def test_append_typed(list L not None): """ >>> test_append_typed([]) None None [1, 2, (3, 4)] """ print L.append(1) L.append(2) print L.append((3,4)) return L def append_unused_retval(L): """ >>> append_unused_retval([]) got error [1, 2, (3, 4)] >>> _ = append_unused_retval(A()) appending 1 appending 2 appending (3, 4) got error >>> append_unused_retval(B()) [1, 2, (3, 4), 5, 6] """ L.append(1) L.append(2) L.append((3,4)) try: L.append(5,6) except TypeError: print u"got error" return L def method_name(): """ >>> method_name() 'append' """ return [].append.__name__