1. 程式人生 > >python面向對象--反射

python面向對象--反射

pre object class %s pri 反射 ttr obj lse

1.反射包含四個函數hasattr(),getattr(),setattr(),delattr()
2.hasattr(o,name)判斷類中是否存在name屬性或方法

class test(object):
    def __init__(self):
        self.name=‘張三‘
    def show(self):
        print(‘姓名:%s‘%self.name)

T=test()
print(hasattr(T,‘show‘))
print(hasattr(T,‘name‘))
print(hasattr(T,‘name1‘))

>>:
True
True
False

3.getattr(o,name)根據name字符串取得對應類中的屬性或方法

class test(object):
    def __init__(self):
        self.name=‘張三‘
    def show(self):
        print(‘姓名:%s‘%self.name)

T=test()
res=getattr(T,‘show‘)
res()

>>:
姓名:張三

4.setattr(o,name,value)設置類的屬性值

class test(object):
    def __init__(self):
        self.name=‘張三‘
    def show(self):
        print(‘姓名:%s‘%self.name)

T=test()
setattr(T,‘name‘,‘李四‘)
print(T.name)
>>:
李四

5.delattr(o,name)刪除類的屬性或方法

class test(object):
    def __init__(self):
        self.name=‘張三‘
    def show(self):
        print(‘姓名:%s‘%self.name)

T=test()
delattr(T,‘name‘)
print(T.name)
>>:
報錯

python面向對象--反射