day22_反射
目录
反射
反射: 指的是通过字符串对 对象或类的属性进行操作。
1、hasattr(obj or class,'attr_name')
2、getattr(obj or class,'attr_name',default=None)
3、setattr(obj or class,'attr_name',value)
4、delattr(obj or class,'attr_name')
class Foo:
school = 'oldboy'
def __init__(self,name,age):
self.name = name
self.age = age
foo = Foo('alex',18)
# 1
# 判断obj or class 中是否存在属性attr_name,返回一个布尔值
print(hasattr(foo,'name')) # True
print(hasattr(foo,'gender')) # False
# 2
# 获取obj or class 的属性值,没有这个属性,就返回default的值
print(getattr(foo,'name',default=None))
print(getattr(foo,'gender',default=None))
# 3
# 设置obj or class 的属性值,若有这个属性就更新值,若没有这个属性就创建这个属性,并赋值为value
setattr(foo,'name','tank')
setattr(foo,'gender','male')
print(foo.name)
print(foo.gender)
'''
tank
male'''
# 4
# 删除对象或者类的属性
delattr(Foo,'school')
print(getattr(Foo,'school','没有找到属性school'))
print(Foo.__dict__.get('school'))
'''
没有找到属性school
None
'''

浙公网安备 33010602011771号