Hi, I'm trying to count method calls. Tried this but... >>>> class MyList(list): > ... def __init__(self): > ... self.calls = 0 > ... def __getattr__(self, name): > ... self.calls += 1 > ... return list.__getattribute__(self, name) > >>>> a = MyList() >>>> a > [] >>>> a.append(1) >>>> a > [1] >>>> a.calls > 88 >>>> a.append(3) >>>> a.calls > 88 >>>> a.sort() >>>> a > [1, 3] >>>> a.calls > 176
It's doing some strange things with self.calls. I've also tried : >>>> class MyList(list): > ... def __init__(self): > ... self.calls = 0 > ... def __getattribute__(self, name): # Here's the change > ... self.calls += 1 > ... return list.__getattribute__(self, name) > >>>> a = MyList() >>>> a > [] >>>> a.append(1) File "<input>", line 5, in __getattribute__ File "<input>", line 5, in __getattribute__ .... snipped ..... File "<input>", line 5, in __getattribute__ File "<input>", line 5, in __getattribute__ RuntimeError: maximum recursion depth exceeded Any idea what's going on in both tries? And how can I intercept method calls without defining all of list's methods. Thanks _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor