###getattr 是python的一个内建函数。
** getattr()** 这个方法最主要的作用是实现反射机制。即通过字符串获取方法实例。这样,你就可以把一个类可能要调用的方法放在配置文件里,在需要的时候动态加载。
python中和getattr相关的 hasattr , setattr ,delattr 。
class Xiaobai:
def __init__(self):
self.name = "xiaobai"
def setName(self,name):
self.name = name
def getName(self):
return self.name
def greet(self):
print "Hello, I am %s " % self.name
foo = Xiaobai()
test = hasattr(foo,'setName') # 判断 foo对象中是否含有setName方法,如果有返回True
print test
输出:
True
一、 hasattr(object,name)
判断object中过是否含有name属性,例如:
foo = Xiaobai()
hasattr(foo,'setName') # 判断 foo对象中是否含有setName方法,如果有返回True
二、getattr(object,name,default)
如果存在name属性(方法)则返回name的值(方法地址),否则返回default值。
getattr(foo,'name','NA') # 存在name属性,所以返回其value
输出:
xiaobai
getattr(foo,’age’,’NA’)
输出:
NA
它其实和直接object.name用法一样 三、setattr(object,name,default)
setattr(foo,'age','18')
字符串可能列出一个现有的属性(或一个新的属性)。这个函数将值付给属性的 类似 : foo.age = 18
setattr(foo,'age','18')
test3 = getattr(foo,'age','not found')
print test3
输出:
18
四、delattr(object,'name')
delattr(foo,'name') # 删除属性name ,原值为 'xiaobai'
getattr(foo,'name','not found')
输出:
not found