[Python-Dev] method decorators (PEP 318)

Josiah Carlson jcarlson at uci.edu
Sun Mar 28 23:56:03 EST 2004


> > > and wouldn't bother with staticmethods at all. How often do you
> > > actually need a staticmethod in particular and *not* a classmethod?
> > 
> > It's quite useful to be able to develop, essentially stateless, static
> > method utility libraries that dont need to be class based.  Why create
> 
> I'm not sure I understand. Why not make them module-level functions?

Namespaces my friend, namespaces (I don't know if other people use this,
but I have on occasion).

#example.py
class functions_a:
    def foo(inp1, inp2) [staticmethod]:
        #do something
    #more functions that do something

class functions_b:
    def foo(inp1, inp2) [staticmethod]:
        #do something slightly different
    #more functions that do something different

#end example.py

We can use the classes as mini namespaces, and only need to import and
distribute a single module.  With class decorators (which seem to be in
favor right now), we can go even a step farther with the following
(which is another reason why class decorators are a good idea)...

def make_all_static(cls):
    for i,j in cls.__dict__.iteritems():
        if isinstance(j, instancemethod)
        cls.__dict__[i] = staticmethod(j)

class functions_c [make_all_static]:
    def foo(inp1, inp2):
        #do something a bit more different
    #more functions that do something a bit more different


Once again, you can use classes as namespaces in a single module.

 - Josiah




More information about the Python-Dev mailing list