python的反射

目前大多数网站都是通过路由的方法来,处理url请求,如果有很多个url的话,不停的include或者用if判断匹配,似乎不太符合情理,因此这里讲讲python的反射机制,

自动装在模块。请看下面的实例:

在目录

/myspace/mywork/python/reflect

有两个文件

index.py

account.py

account.py内容

#encoding=utf-8

def login(uname):
    print '恭喜你登录成功'+uname

index.py内容

#encoding=utf-8
try:
    log_space = __import__('account') #导入模块名称
    func = getattr(log_space,'login') #导入方法
    func('hello world')
except (ImportError,AttributeError),e:
    print '跳转到404页面'

如果是要加载文件夹里面的内容

#encoding=utf-8
data = raw_input('接收输入地址')
array = data.split('/')
try:
    userspace = __import__('account.' + array[0]) #如果是account文件夹
    model = getattr(userspace,array[0]) #需要再导入一次
    func = getattr(model,array[1])
    func()

except ImportError,e:
    print 1,e
    print '找不到模块,跳转到404页面'

except AttributeError,e:
    print 2,e
    print '找不到属性,跳转到404页面'

except Exception,e:
    print 3,e
    print '未知的错误'

else:
    print '没有出错执行'

finally:
    print '无论出错与否都执行'
原文地址:https://www.cnblogs.com/gide/p/5579583.html