Finally, I've just used normal names for the functions. I think the issue of function shadowing is best handled by recommending that all of the functions be called using the class explicitly - this works just as well for instance methods as it does for class or static methods.
I wonder if it would be worth adding a descriptor that gives a warning for usage from instances, e.g.:
py> import new
py> import warnings
py> class InstanceWarner(object):
... def __init__(self, func):
... self.func = func
... def __get__(self, obj, type=None):
... if obj is None:
... return self.func
... else:
... warnings.warn('methods of this type should not be '
... 'invoked from instances')
... return new.instancemethod(self.func, obj, type)
...
py> class Bunch(object):
... @InstanceWarner
... def update(self):
... print 'updating', self
...
py> Bunch.update(Bunch())
updating <__main__.Bunch object at 0x01152830>
py> Bunch().update()
__main__:8: UserWarning: methods of this type should not be invoked from instances
updating <__main__.Bunch object at 0x011527D0>
Steve -- http://mail.python.org/mailman/listinfo/python-list