python之反射

python之反射

一、python之反射

  • 通过字符串映射到属性身上
class Tzh:
    def __init__(self,name):
        self.name = name
    def f1(self):
        print('f1')

t = Tzh('tzh')
print(t.name)

#hasattr,判断对象 t 所在的类Tzh中是否有该属性,或者函数
print(hasattr(t, 'name'))
print(hasattr(t, 'f1'))

#getattr的使用:获取属性的值
if (hasattr(t,'f1')):
    f = getattr(t,'f1')  #相当于 f = t.f1
    f()                  #f1()
#如果对象t,所在类没该属性或者函数,会报错。但是传入第三个参数,即使没该函数或者属性,返回值是node
getattr(t,'xxx',None)    #输出空白

#setattr的使用:设置属性的值
setattr(t,'name','zhangsan')
print(t.name)  #输出zhangsan


#delattr的使用:删除属性
delattr(t,'name')
print(t.__dict__) #输出:{},说明属性谋得了
原文地址:https://www.cnblogs.com/hsyw/p/13688392.html