反射的使用
静态调用属性/方法概念运行前如果要调用类的属性或者方法,需要先实例化它的对象
动态调用属性/方法概念
运行时就获取类的属性或者方法,甚至添加、修改它的属性或者方法
(1)给类或对象动态的添加属性或者方法
setattr(x, y, v)
x:需要添加属性或方法的类或对象
y:需要添加的属性名或方法名
v:属性名或方法名的值
给类的对象动态添加属性
使用这个对象来调用这个属性
使用同一个类的另一个对象调用之前给类的对象动态添加的属性
使用类名直接调用给对象动态添加的属性
给类动态添加属性
使用这个类来调用这个属性
使用这个类的对象来调用这个属性
(2)获取类或对象动态添加的属性值
getattr(object, name, default=None)
object:获取值的目标(一般为类名或对象名)
name:获取哪个属性的值
default:保持默认值(None)就好
目标属性是类属性的,就使用类名或该类的对象的对象名来获取属性值;
目标属性是对象属性的,就使用该对象名来获取属性值(其他对象名或类名都不能获取)。
(3)判断类或对象是否有该属性
判断当前类或对象里是否有该属性,返回布尔值(True为有该属性,False为没有该属性)
使用“hasattr”函数判断类里是否有该属性
使用“hasattr”函数判断对象里是否有该属性
(4)删除类或对象里的属性
使用“delattr”函数删除类里的属性
使用“delattr”函数删除对象里的属性
页:
[1]