python反射机制 - Go语言中文社区

python反射机制


反射的本质:
反射就是通过字符串的形式,导入模块;通过字符串的形式,去模块寻找指定函数,并执行。利用字符串的形式去对象(模块)中操作(查找/获取/删除/添加)成员,一种基于字符串的事件驱动!
下面我们通过反射机制在web路由上的应用来介绍反射

首先我们来看如下代码的设计:

users.py 模块中代码
这里写图片描述

visit模块中的代码:
这里写图片描述

执行结果:
这里写图片描述

从执行结果可以看到我们访问到了login()函数中的内容,但是如果我们有许许多多个这样的函数,该怎么办呢,总不能写许多个elif进行条件判断吧,所以我们就可以介绍反射,通过输入指定的字符串来动态的获取需要使用的函数。
这里我们将介绍getattr(),hasattr() 两个函数的使用方法

代码如下:
这里写图片描述

函数hasattr(object,str) 将接受两个参数,第一个为要访问的模块(或者对象)名,第二个参数是一个字符串(切记),并通过判断users模块中是否有我们需要访问的内容,如果有 返回True,没有则返回False并执行else代码块。

getatttr()函数参数与上面相同,作用是我们寻找到users模块中函数名为inp的函数,并且把此函数的内存地址赋值给fun,进而进行调用。这样就解决了要不停的elif的尴尬。

补充:
以上是解决的多个函数内容的动态调用,但是在生产环境下,我们避免不了要对多个模块中的内容进行动态调用。类似于这样:

接下来我们介绍import() 方法对模块进行动态调用。

这里写图片描述
运行结果如下:
这里写图片描述

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_38689666/article/details/78964324
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-13 22:30:50
  • 阅读 ( 454 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢