python反射 自省

2021-07-15 07:30:33 字數 887 閱讀 8084

反射(自省)的簡單理解:

通過類名例項化物件;

得到類的所有屬性和函式,並實現呼叫;

簡單示例:

# -*- 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引數的作...