I was just looking into classobject.c again after probably more than a year and wondered... has anyone tried optimizing the method lookup and binding process recently ? It seems that for every method call the following happens: 1. the method is looked up in the instance dict; this fails 2. the method is looked up in the class dict; this succeeds and returns a function 3. the class then turns the function into a new unbound method 4. the instance sees the unbound method and creates a new bound method (deleting the unbound method) and returns it Two possible improvements: · let the instance use a special class_getattr_ex function that does not do the extra unbound method step (3.) or · make methods mutable and have step 4. insert the instance object into the method object to turn it into a bound method Has anyone tried this ? Does it produce anything noticeable w/r to method call speed ? BTW, why does the new module check for instance objects for the INSTANCE argument ? Methods can handle any object in this slot, just as they handle any callable object as "function". Could be put to some use when wrapping types into classes or vice versa... which is what motivated the above ;-) Just curious, -- Marc-Andre Lemburg ______________________________________________________________________ Y2000: 105 days left Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/