关于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)
学习是一种态度,坚持是质变的利器!

浙公网安备 33010602011771号