On Apr 5, 3:58 pm, s...@pobox.com wrote: > Michele> There is no need for new.instancemethod for new style classes: > > >>> class C: pass > ... > >>> c=C() > >>> def f(self): pass > ... > >>> c.f = f.__get__(c, C) > >>> c.f > <bound method C.f of <__main__.C object at 0xb7b6fdec>> > > Like a chimpanzee I can mimic your use of __get__ (that is, use the pattern > you've defined without understanding what it means), but based on the 3.1 > docs I haven't the slightest idea what it's really supposed to do: > > object.__get__(self, instance, owner) > Called to get the attribute of the owner class (class attribute > access) or of an instance of that class (instance attribute > access). owner is always the owner class, while instance is the > instance that the attribute was accessed through, or None when the > attribute is accessed through the owner. This method should return > the (computed) attribute value or raise an AttributeError exception. > > And what does object.__set__ do? > > object.__set__(self, instance, value) > Called to set the attribute on an instance instance of the owner > class to a new value, value. > > What attribute on the instance? > > I rather like functools.partial better than object.__get__. At least I can > understand it. > > Skip
Perhaps the docstring should contain a link to Raymond Hettinger's descriptor essay: http://users.rcn.com/python/download/Descriptor.htm -- http://mail.python.org/mailman/listinfo/python-list