gpt4 book ai didi

浅谈python中的getattr函数 hasattr函数

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章浅谈python中的getattr函数 hasattr函数由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

hasattr(object, name) 。

作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的).

示例:

?
1
2
3
>>> hasattr(list, 'append' )
True >>> hasattr(list, 'add' )
False

getattr(object,name,default)

作用:返回object的名称为name的属性的属性值,如果属性name存在,则直接返回其属性值;如果属性name不存在,则触发AttribetError异常或当可选参数default定义时返回default值.

这个方法最主要的作用是实现反射机制。也就是说可以通过字符串获取方法实例。这样,你就可以把一个类可能要调用的方法放在配置文件里,在需要的时候动态加载.

下面我们使用小例子来说明它们的用法:

?
1
2
3
4
5
6
7
8
import func_file    #自定义python模块
cs = input ( '请输入要访问的URL:' )
if cs = = 'loggin' :
  func_file.loggin()
if cs = = 'home' :
  func_file.home()
if cs = = '':
  pass #以下省略

当我定义一个自定义模块,去调用其中的方法的时候,使用if去判断时,如果模块内用很多方法,会大大影响开发的效率,代码冗余差,显然这是不可取的。下面我们使用hasattr()函数来实现我们的需求:

示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
import func_file    #自定义python模块,需事先存在
def run():
  while True :
   cs = input ( '请输入要访问的URL:' )
   #hasattr利用字符串的形式去对象(模块)中操作(寻找)成员
   if hasattr (func_file,cs):      #判断用户输入的URL是否在func_file模块中
     func = getattr (func_file,cs)    #有则将func_file模块下的cs函数赋值  
     func()              #等同于执行func_file模块下的cs函数
   else :
     print ( '404' ) #定义错误页面
run()

我们导入一个自定义模块后,gatattr可以根据输入的内容动态加载,利用hasattr()函数来判断用户输入的是否存在,不存在则调用自定义方法.

是不是感觉和我们打开网址URL很类似啊! 。

上一个示例有一个问题,在实际情况中,我们的功能函数可能存放在很多模块中,每一个都需要单独导入,那我们可不可以利用getattr()函数去动态加载模块呢?当然可以啦! 。

请看示例:

?
1
2
3
4
5
6
7
8
9
10
11
12
def run():
  while True :
   cs = input ( '请输入:' )
   v,k = cs.split( '/' ) #获得输入的模块和模块的方法
   obj = __import__ ( 'lib.' + v,fromlist = True ) #调用lib目录下的模块fromlist=True按路径连接的方式导入
   if hasattr (obj,k):
     f = getattr (obj,k)
     f()
   else :
     print ( '404' )
if __name__ = = '__main__' :
    run()

是不是感到getattr很强大啊。其实,getattr()就是实现python反射的一块积木,结合其它方法如setattr(),dir() 等,我们可以还可以做出很多有趣的事情.

以上这篇浅谈python中的getattr函数 hasattr函数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

最后此篇关于浅谈python中的getattr函数 hasattr函数的文章就讲到这里了,如果你想了解更多关于浅谈python中的getattr函数 hasattr函数的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com