反射:
就是利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员。
4个方法:
1 hasattr(object,name_str) 判断方法是否存在(判断一个对象object里是否有对应的name_str字符串名的方法)返回布尔型
#对象名,字符串形式
2 getattr(object,name_str)可以查到对象地址,加()调用
(根据name_str字符串方法名去获取对象object里对应方法的内存地址,并可以调用)
3 setattr(object,name_str,方法)(x,"y",v/相当于x."y"=v)在类外动态给对象添加一个函数方法,或属性,
用字符串形式调用,调用时必须把对象本身传进去
4 delattr(object,name_str)可用字符串删除方法,属性
if hasattr(object,name_str):
a=getattr(object,name_str)
a()
else:
setattr((object,name_str,新设定的函数名) # 等同于(object.name_=函数名)
object.name_str(object) #调用时要把对象自身传进去产生关联
就是利用字符串的形式去对象(模块)中操作(寻找/检查/删除/设置)成员。
4个方法:
1 hasattr(object,name_str) 判断方法是否存在(判断一个对象object里是否有对应的name_str字符串名的方法)返回布尔型
#对象名,字符串形式
2 getattr(object,name_str)可以查到对象地址,加()调用
(根据name_str字符串方法名去获取对象object里对应方法的内存地址,并可以调用)
3 setattr(object,name_str,方法)(x,"y",v/相当于x."y"=v)在类外动态给对象添加一个函数方法,或属性,
用字符串形式调用,调用时必须把对象本身传进去
4 delattr(object,name_str)可用字符串删除方法,属性
if hasattr(object,name_str):
a=getattr(object,name_str)
a()
else:
setattr((object,name_str,新设定的函数名) # 等同于(object.name_=函数名)
object.name_str(object) #调用时要把对象自身传进去产生关联