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;

       

 

原文地址:https://www.cnblogs.com/caixinxiong/p/12360619.html