it may be better to replace the try/except with:

    if hasattr(v, '__call__')
        v = v()