On Fri, 12 Jul 2013 07:36:30 +0000, Duncan Booth wrote: > To be a convincing use-case you would have to show a situation where > something had to be both a static method and a utility method rather > than just one or the other and also where you couldn't just have both.
I have a class where I have a function that needs to be called both while the class is being constructed, and afterwards: class Example: @staticmethod def do_stuff(arg): ... do_stuff(23) # This doesn't work. Example.do_stuff(42) I have work-arounds: inside the class, I call do_stuff.__func__ instead of do_stuff, but really, that's ugly and distracting and merely a work- around for the fact that staticmethods aren't callable. To make them callable is trivially easy: they just need a __call__ method that calls __func__ for you. > If you can persuade me that you need _handle_bool as both a static > method and a utility function, you probably also need to explain why you > can't just use both: > > class Parser: > def _handle_bool(input): ... > handle_bool = staticmethod(_handle_bool) That's extremely inelegant. Why have two functions for something which is conceptually one? -- Steven -- http://mail.python.org/mailman/listinfo/python-list