关于python的反射应用

python的反射函数:getattr()我们很熟悉,但是真正应用起来,却了解很少。

一:反射在web框架上的应用

web框架的路由系统,我们熟悉的web框架中,就是根据用户请求的url的类型来反射到后台视图函数。

典型的例子:django的路由系统

1 urlpatterns = [
2     url(r'^admin/', admin.site.urls),
3     url(r'^home', views.home),
4 ]

通过前端的路由系统。将访问home的url映射到view视图里的home函数。

1 def home(request):
2     return render(request,'1.html')

 二:getattr()可以反射一个对象的字段。包含数据库的对象的字段、类的本身的字段。

 1 class Attr():
 2     def __init__(self,name):
 3         self.name=name
 4     def get(self):
 5         return 'ok'
 6 
 7 
 8 if __name__ == '__main__':
 9     obj = Attr('evil')
10     if hasattr(obj,'name'):
11         filed=getattr(obj,'name')
12         print(filed)

 

也可以反射一个函数:

 1 class Attr():
 2     def __init__(self,name):
 3         self.name=name
 4     def get(self):
 5         return 'ok'
 6 
 7 
 8 if __name__ == '__main__':
 9     obj = Attr('evil')
10     if hasattr(obj,'get'):
11         func=getattr(obj,'get')
12         ret=func()
13         print(ret)

 

posted @ 2016-12-07 17:16  evil_liu  阅读(279)  评论(0)    收藏  举报