python之hasattr、getattr和setattr函数

时间:2021-11-22 20:52:45
hasattr函数使用方法
 1 # hasattr函数使用方法
2 # hasattr(object,attr)
3 # 判断一个对象里是否有某个属性或方法,返回布尔值,有为True,否则False
4 class person():
5 '''测试类'''
6 name = 'mike'
7 age = '25'
8
9 def say(self):
10 '''测试方法'''
11 return 'hello!'
12
13
14 per = person()
15 has_name = hasattr(per, 'name')
16 has_sex = hasattr(per, 'sex')
17 has_say = hasattr(per, 'say')
18 print('1.是否有name属性:', has_name)
19 print('2.是否有sex属性:', has_sex)
20 print('3.是否有say方法:', has_say)

运行结果:

1.是否有name属性: True
2.是否有sex属性: False
3.是否有say方法: True

  

getattr函数使用方法
 1 # getattr函数使用方法
2 # getattr(object,attr[,default])
3 # 获取对象的属性或方法,可设置输出默认值,
4 # 如果获取方法,返回的是内存地址,如果需要运行,后面添加一对括号
5 has_name = getattr(per, 'name')
6 has_sex = getattr(per, 'sex', 'male')
7 has_say = getattr(per, 'say')()
8 print('1.name属性:', has_name)
9 print('2.sex属性不存在,返回默认值:', has_sex)
10 print('3.say方法执行结果:', has_say)

运行结果:

1.name属性: mike
2.sex属性不存在,返回默认值: male
3.say方法执行结果: hello!

 

setattr函数使用方法
1 # setattr函数使用方法
2 # setattr(object,attr,values)
3 # 给对象的属性赋值,若属性不存在,则先创建再赋值
4 setattr(per, 'name', 'Tom')
5 print('1.修改name属性:', per.name)
6 setattr(per, 'id', '6557')
7 print('2.创建id属性:', per.id)

运行结果:

1.修改name属性: Tom
2.穿件sex属性: 6557