getattr() on nested functions?
Gabriel Genellina
gagsl-py2 at yahoo.com.ar
Wed Aug 20 05:16:08 EDT 2008
More information about the Python-list mailing list
Wed Aug 20 05:16:08 EDT 2008
- Previous message (by thread): simple Question about using BeautifulSoup
- Next message (by thread): getattr() on nested functions?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
En Wed, 20 Aug 2008 05:34:38 -0300, Gabriel Rossetti <gabriel.rossetti at arimaz.com> escribi�: > I can't get getattr() to return nested functions, I tried this : > > >>> def toto(): > ... def titi(): > ... pass > ... f = getattr(toto, "titi") > ... print str(f) > ... > >>> toto() > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "<stdin>", line 4, in toto > AttributeError: 'function' object has no attribute 'titi' > >>> > > I thought that since functions are objects, that I could obtain it's > nested functions. How come it doesn't work and what can I do to > fix/replace it? I'm using it in code that is like this : Yes, functions are objects, but inner functions aren't attributes of the outer; they live in its local namespace instead (and inner functions won't exist until the outer function executes) > def __test(self, action, *args): > def request(params): > pass > def submit(params, values): > pass > def update(params, values): > pass > def delete(params): > pass > result = getattr(__test, action)(*args) > return resultToXml(result) > > where "action" is a string containing either "request", "submit", > "update", or "delete". I was using an evel() with this form : > > result = eval(action + "(params, values)") > > but I didn't find that very clean. Try using locals()[action] -- Gabriel Genellina
- Previous message (by thread): simple Question about using BeautifulSoup
- Next message (by thread): getattr() on nested functions?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list