python中hasattr()、getattr()、setattr()函数的使用
1. hasattr() 函数用于判断对象是否包含对应的属性。
用法:hasattr(object, name)
参数: object -- 对象
name -- 字符串,属性名。
当然对于python的对象而言,属性包含变量和方法;有则返回True;
没有则返回False;需要注意的是name参数是string类型,所以不管是要判断变量还是方法,其名称都以字符串形式传参;
getattr和setattr也同样;
实例:
#!/usr/bin/python # --coding: UTF-8 -- class Computer(): #初始化对象的属性 def __init__(self): self.a = 4 self.b = 5 #定义一个实例方法 def add(self): return self.a+self.b test = Computer() #实例化对象test print(hasattr(test,'a')) print(hasattr(test,'b')) print(hasattr(test,'c')) #没有该属性 print(hasattr(test,'add')) #判断对象test是否存在方法:add
运行结果:
2.getattr() 函数用于返回对象的某个属性值。
用法:getattr(object, name,[default ])
参数: object -- 对象
name -- 字符串,属性名。
default -- 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
获取object对象的属性的值:
1.如果存在则返回属性值;
2.如果不存在分为两种情况,一种是没有default参数时,会直接报错;
给定了default参数,若对象本身没有name属性,则会返回给定的default值。
实例:
当设置c的默认属性值:此时就不会报no attribute类型的错误,而是获取到设置的默认属性值
如果给定的属性name是对象的方法,则返回的是函数对象,
需要调用函数对象来获得函数的返回值;调用的话就是函数对象后面加括号,如func之于func();
3.setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。
用法:setattr(object, name, value)
参数: object -- 对象
name -- 字符串,属性名。
value -- 属性值
给object对象的name属性赋值value,如果对象原本存在给定的属性name,则setattr会更改属性的值为给定的value;
如果对象原本不存在属性name,setattr会在对象中创建属性,并赋值为给定的value;