Paul Lussier <p.luss...@comcast.net> writes:
>
> Hi Folks,
> 
> How do I create dynamically created methods in python classes?
> 
> For example, if I have a number of member variables which I want to get
> or set, I don't want to have to create getters and setters for each
> attribute, since the code would largely be the same, just the variable
> I'm dealing with would be different.

Rather than implementing a whole bunch of similar `get_*()' and
`set_*()' methods in Python, you can just define __getattr__() and
__setattr__():

        http://docs.python.org/reference/datamodel.html#object.__getattr__

How's that? Perfect fit? :)

Alternately (e.g.: something other than `getters and setters'): can't
you just create a single method that takes an `extra' parameter?

Even if you really do really want to `lots of methods' interface, I'd
still start with unified dispatcher-method--then the other methods
would just be simple wrappers, e.g.:

    class C:
        def do_stuff(self, key, *args):
           print 'doing %s stuff...' % key

        do_x = lambda self, *args: self.do_stuff('x', *args)
        do_y = lambda self, *args: self.do_stuff('y', *args)
        do_z = lambda self, *args: self.do_stuff('z', *args)


You could even set all of those `C.do_*' attributes (which become
methods) automatically, e.g.:

    for key in ('xray', 'yankee', 'zulu'):
        def do_predispatched_stuff_stuff(self, *args):
            return self.do_stuff(key, *rags)

        setattr(C, key, do_predispatched_stuff)

-- 
Don't be afraid to ask (Lf.((Lx.xx) (Lr.f(rr)))).
_______________________________________________
gnhlug-discuss mailing list
gnhlug-discuss@mail.gnhlug.org
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss/

Reply via email to