菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
213
0

python的反射

原创
05/13 14:22
阅读数 12506

目前大多数网站都是通过路由的方法来,处理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 '无论出错与否都执行'

 

发表评论

0/200
213 点赞
0 评论
收藏
为你推荐 换一批