[Python-Dev] Making staticmethod objects callable?
Nicolas Fleury
nidoizo at yahoo.com
Wed Mar 1 20:28:40 CET 2006
Steven Bethard wrote:
> My only (mild) concern is that if staticmethod is going to get a
> __call__, I think classmethod should probably get one too. Inside a
> class this doesn't make much sense:
I agree, make sense or not, if "@staticmethod def foo()" and a simple
"def foo(self)" can all be called inside class definition, "@classmethod
def foo(cls)" should too.
> Anyway, my feeling was that running into this behavior (that
> staticmethod is not callable) is a good oportunity to explain how
> descriptors work. And once you start playing around with staticmethod
> and classmethod, you're going to need to learn that pretty soon
> anyway. Hiding it a little bit longer with a __call__ method on
> staticmethod isn't going to help much in the long run.
The problem is that even after explaining descriptors (which IMHO can be
a more advanced feature for newbies), you still need a workaround and
you might end up with (or call __get__):
class A:
def foo(): pass
bar = foo()
foo = staticmethod(foo)
Which I find sad considering all the energy debating @decorators;)
Regards,
Nicolas
More information about the Python-Dev
mailing list