hasattr(object, name)
作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的)。
示例:
>>> hasattr(list, 'append') True >>> hasattr(list, 'add') False
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#以下省略
当我定义一个自定义模块,去调用其中的方法的时候,使用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()
我们导入一个自定义模块后,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()
是不是感到getattr很强大啊。其实,getattr()就是实现python反射的一块积木,结合其它方法如setattr(),dir() 等,我们可以还可以做出很多有趣的事情。
以上这篇浅谈python中的getattr函数 hasattr函数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍Python中getattr函数和hasattr函数作用详解,包括了Python中getattr函数和hasattr函数作用详解的使用技巧和注意事项,需要的朋友参考一下 hasattr(object, name) 作用:判断对象object是否包含名为name的特性(hasattr是通过调用getattr(ojbect, name)是否抛出异常来实现的)。 示例: 作用:返回obje
主要内容:Python hasattr()函数,Python getattr() 函数,Python setattr()函数除了前面介绍的几个类中的特殊方法外,本节再介绍 3 个常用的函数,分别是 hasattr()、getattr() 以及 setattr。 Python hasattr()函数 hasattr() 函数用来判断某个类实例对象是否包含指定名称的属性或方法。该函数的语法格式如下: hasattr(obj, name) 其中 obj 指的是某个类的实例对象,name 表示指定的属性
本文向大家介绍浅谈使用Python内置函数getattr实现分发模式,包括了浅谈使用Python内置函数getattr实现分发模式的使用技巧和注意事项,需要的朋友参考一下 本文研究的主要是使用Python内置函数getattr实现分发模式的相关问题,具体介绍如下。 getattr 常见的使用模式是作为一个分发者。举个例子,如果你有一个程序可以以不同的格式输出数据,你可以为每种输出格式定义各自的格式
本文向大家介绍浅谈Shell中的函数,包括了浅谈Shell中的函数的使用技巧和注意事项,需要的朋友参考一下 函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell也支持函数。Shell函数必须先定义后使用。 1.Shell函数的定义格式 可以带function关键字使用function fun_name()来定义,也可以直接给出函数名fu
本文向大家介绍浅谈Python中函数的参数传递,包括了浅谈Python中函数的参数传递的使用技巧和注意事项,需要的朋友参考一下 1.普通的参数传递 2.参数个数可选,参数有默认值的传递 参数sep的缺省值是'_' 如果这个参数不给定值就会使用缺省值 如果给定 则使用给定的值 需要注意 如果一个参数是可选参数 那么它后面所有的参数都应该是可选的,另外 可选参数的顺序颠倒依然可以正确的给对应的参数赋值
本文向大家介绍详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数,包括了详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数的使用技巧和注意事项,需要的朋友参考一下 hasattr()函数 hasattr()函数用于判断是否包含对应的属性 语法: hasattr(obj