'Handle all the flickr API calls.
This is Michele Campeotto\'s cleverness, wherein he writes a
general handler for methods not defined, and assumes they are
flickr methods.  He then converts them to a form to be passed as
the method= parameter, and goes from there.
http://micampe.it/things/flickrclient
My variant is the same basic thing, except it tracks if it has
already created a handler for a specific call or not.
example usage:
flickr.auth_getFrob(api_key="AAAAAA")
rsp = flickr.favorites_getList(api_key=flickrAPIKey, \
auth_token=token)'

def __getattr__(self, method, **arg):

    if (not self.__handlerCache.has_key(method)):
        def handler(_self=self, _method=method, **arg):
            _method = ('flickr.' + _method.replace('_', '.'))
            url = (('http://' + FlickrAPI.flickrHost) + FlickrAPI.flickrRESTForm)
            arg['method'] = _method
            postData = ((urllib.urlencode(arg) + '&api_sig=') + _self.__sign(arg))
            f = urllib.urlopen(url, postData)
            data = f.read()
            f.close()
            return XMLNode.parseXML(data, True)
        self.__handlerCache[method] = handler
    return self.__handlerCache[method]
