反射(自省)的簡單理解:
通過類名例項化物件;
得到類的所有屬性和函式,並實現呼叫;
簡單示例:
# -*- coding: utf-8 -*-
class
user
(object):
def__init__
(self):
self.name = 'abc'
self.age = 18
defintroduce
(self):
print
"my name is :"+self.name + ", age:" + str(self.age)
# 根據類名例項化物件
defget_obj
(name):
obj = globals()[name]()
return obj
name = user.__name__ # 得到類名
u = get_obj(name)
u.introduce()
輸出結果:
my name is :abc, age:18
常用函式:
print dir(u) # 返回該物件的所有屬性和函式列表
print hasattr(u, 'name') # 判斷是否存在傳入的屬性或函式
print getattr(u, 'name') # 得到物件屬性值
print setattr(u, 'name', 'ccc') # 設定物件屬性的值
print u.__dict__ # 返回該物件自定義屬性
python反射(自省)
前幾天用owlready構建rdf檔案時,使用類定義實體,屬性和資料屬性,類名就是乙個object,所有建立例項都需要例項類,但是現在資料有很多,我需要讓他們自動建立類的例項,他們的型別為字串,我需要把他們轉為該字串對應的類名,這裡提供了乙個方法 eval 例如name nametype 字串 cl...
python 反射 自省 inspect
自省 自省。正如你所知道的,自省是指 可以檢視記憶體中以物件形式存在的其它模組和函式,獲取它們的資訊,並對它們進行操作。用這種方法,你可以定義沒有名稱的函式,不按函式宣告的引數順序呼叫函式,甚至引用事先並不知道名稱的函式。反射有時候我們會碰到這樣的需求,需要執行物件的某個方法,或是需要對物件的某個字...
Python 物件導向 反射 自省
反射 程式可以訪問,檢測和修改它本身狀態或行為的一種能力 自省 下面就介紹四種實現自省的函式,適用於類和物件 1,判斷object中有沒有乙個name字串對應的屬性或者方法 hasattr object,name 2,獲取object中name字串對應的屬性值或者方法位址,其中default引數的作...