python反射详解
生活随笔
收集整理的這篇文章主要介紹了
python反射详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
反射
#hasattr(obj,name_str)判斷一個對象obj里是否有對應的name_str字符串的方法
#getattr(obj,name_str)根據字符串去獲取obj對象里的對應的方法的內存地址
#setattr(object, name, value) setattr(x,“foobar”,123)相當于x.foobar = 123。
#delattr(object, name) 該函數刪除該obj的一個由string指定的屬性。delattr(x, 'foobar')=del x.foobar
class test(object):def __init__(self,name):self.name=namedef test1(self,fruit):print("%s吃%s水果"%(self.name,fruit))
T=test('王荔')#存在此方法
if hasattr(T,'test1'):#檢查成員func=getattr(T,'test1')#獲取方法地址func('西瓜')
else:setattr(T,'name','王力') #設置成員print(T.name)#不存在此方法,設置變量或修改變量
if hasattr(T,'test10'):#檢查成員func=getattr(T,'name')#獲取變量print(func)else:setattr(T,'age',30) #設置變量setattr(T, 'name','王力') #修改變量print(T.name,T.age)#通過setattr方法把test3函數動態裝配到T這個實例里,方法名是"test2"
def test3(self):print('類外的方法綁定到類內')
setattr(T,'test2',test3)
func=getattr(T,'test2')
func(T)#刪除變量、刪除方法
delattr(T,'name')
#delattr(T,'test1')
#print(T.name)
#print(T.test1())C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
王荔吃西瓜水果
王力 30
類外的方法綁定到類內Process finished with exit code 0
?
總結
以上是生活随笔為你收集整理的python反射详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4天搞定Docker和k8s核心架构,稳
- 下一篇: 【Python】pandas模块操作大型