【python學習筆記】Python反射機制

說明

說到反射,讓人熟知的eval函數,python除了這個函數,還有import() ,getattr、hasattr、setattr、delattr等方法

eval函數

class Test(object):
    def __init__(self):
        self.name = 'leason'

    def foo(self,name):
        self.name = name


if __name__ == "__main__":
    eval_test = eval('Test()')
    print  eval_test.name


<< leason

import()方法

import方法實際上是import導入模塊的另一種方式

//效果相同
import  leason
__import__('leason') 

//多層導入
1. from app.serve import leason 
2. __import__('app.serve.leason',fromlist=True) #如果不加上fromlist=True,只會導入list目錄

操作成員getattr、hasattr、setattr、delattr

getattr、hasattr、setattr、delattr 獲取成員、檢查成員、設置成員、刪除成員

class Test(object):

    def __init__(self):
        self.name = 'leason'

    def func(self):
        return True

obj = Test()
#獲取成員
ret = getattr(obj, 'func')#獲取的是個對象
r = ret()
print(r)

#檢查成員
ret = hasattr(obj,'func')#因爲有func方法所以返回True
print(ret)

#設置成員
print(obj.name) #設置之前爲:leason
ret = setattr(obj,'name','leason1')
print(obj.name) #設置之後爲:leason1

#刪除成員
print(obj.name) #leason
delattr(obj,'name')
print(obj.name) #報錯

leason | 個人博客

發佈了64 篇原創文章 · 獲贊 71 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章