• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > 浅谈python中的getattr函数 hasattr函数

浅谈python中的getattr函数 hasattr函数

作者:jingxian 字体:[增加 减小] 来源:互联网

jingxian 通过本文主要向大家介绍了python getattr,python中getattr,python getattr函数,python hasattr,python3 hasattr等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

hasattr(object, name)

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

示例:

>>> hasattr(list, 'append')
True >>> hasattr(list, 'add')
False
</div>

getattr(object,name,default):

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

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

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

import func_file    #自定义python模块
cs=input('请输入要访问的URL:')
if cs=='loggin':
 func_file.loggin()
if cs =='home':
 func_file.home()
if cs =='':
 pass#以下省略
</div>

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

示例如下:

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()
</div>

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

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

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

请看示例:

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()
</div>

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

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

</div>

您可能想查找下面的文章:

  • 全面了解Python的getattr(),setattr(),delattr(),hasattr()
  • 浅谈python中的getattr函数 hasattr函数
  • 浅析Python中的getattr(),setattr(),delattr(),hasattr()
  • Python中getattr函数和hasattr函数作用详解
  • 详解Python中 __get__和__getattr__和__getattribute__的区别
  • 全面了解Python的getattr(),setattr(),delattr(),hasattr()
  • 浅谈python中的getattr函数 hasattr函数
  • 浅析Python中的getattr(),setattr(),delattr(),hasattr()
  • Python中getattr函数和hasattr函数作用详解
  • Python __setattr__、 __getattr__、 __delattr__、__call__用法示例

相关文章

  • 基于wxpython实现的windows GUI程序实例
  • Python中操作符重载用法分析
  • python三元运算符实现方法
  • 将Django框架和遗留的Web应用集成的方法
  • python用Pygal如何生成漂亮的SVG图像详解
  • 查看Python安装路径以及安装包路径小技巧
  • 使用Python的PIL模块来进行图片对比
  • Python 字典与字符串的互转实例
  • 详解Python的Django框架中的模版相关知识
  • 使用grappelli为django admin后台添加模板

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
    • python 时间戳与格式化时间的转化实现代码
    • python中安装模块包版本冲突问题的解决
    • 在Python的Django框架中用流响应生成CSV文件的教程
    • python sys模块sys.path使用方法示例
    • 使用python提取html文件中的特定数据的实现代码
    • Python简单检测文本类型的2种方法【基于文件头及cchardet库】
    • 详解Python中 __get__和__getattr__和__getattribute__的区别
    • 在Python中移动目录结构的方法
    • Python实现批量下载图片的方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有