the three types: function, classmethod, staticmethod are descriptors. but staticmethod's __get__ return the orignal value, others return object of instancemethod. (from souce in Objects/funcobject.c) so the staticmethod just like a wrap that make the wrapped object 'frozen'. like in your example. is it right? the name and document are mis-understanded.
thanks 2009/9/2 P.J. Eby <p...@telecommunity.com>: > At 08:50 PM 9/1/2009 -0400, Terry Reedy wrote: >> >> Greg Ewing wrote: >>> >>> Benjamin Peterson wrote: >>> >>>> It depends on whether you're keeping the "callable" object around or >>>> not. Somebody could add a __call__ method later. >>> >>> Good point. Removing the check sounds like the >>> right thing to do, then. >> >> Both classmethod & staticmethod are documented as having a *function* >> (callable, as I interprete that) as their single argument. Seems reasonable >> to me. Turning the argument into a function after the fact seems like a >> really esoteric use case. > > The main use case for staticmethod is to prevent __get__ from being called > on an object retrieved from a class or an instance. It just happens that > the most common types of objects you'd want to do that on are functions. > > However, if for some reason you intend to make a *descriptor* available as > an attribute (via a class default), then wrapping it with staticmethod is > the only easy way to do it. > > For example, if you're writing a class whose instances have an attribute > that holds a "property" instance, and you want to provide a class-level > default, the simplest way to do it is to wrap the default property instance > with staticmethod, so that it's not treated as a property of the > class/instance. > > (Property instances are of course not callable.) > > _______________________________________________ > Python-Dev mailing list > Python-Dev@python.org > http://mail.python.org/mailman/listinfo/python-dev > Unsubscribe: > http://mail.python.org/mailman/options/python-dev/s7v7nislands%40gmail.com > _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com