Bug in Python?
Sven R. Kunze
srkunze at mail.de
Fri Feb 26 17:08:41 EST 2016
Hi everybody,
I recognized the following oddity (background story:
http://srkunze.blogspot.com/2016/02/lets-go-down-rabbit-hole.html).
Python sometimes seems not to hop back and forth between C and Python code.
Can somebody explain this?
class MyList(list):
count = 0
def __setitem__(self, key, value):
self.count += 1
super(MyList, self).__setitem__(key, value)
# using heapq directly
from heapq import heappop
ml = MyList(range(10))
heappop(ml) # that's C
print(ml.count) # print 0
# using exact copy from heapq
from heapq import _siftup
def my_heappop(heap):
lastelt = heap.pop()
if heap:
returnitem = heap[0]
heap[0] = lastelt
_siftup(heap, 0) # that's C
return returnitem
return lastelt
ml = MyList(range(10))
my_heappop(ml)
print(ml.count) # print 6
Best,
Sven
More information about the Python-list
mailing list