獲取物件的資訊之反射

2022-07-24 07:33:07 字數 1324 閱讀 3197

所謂反射,指的是以字串額形式來操作(包括:增刪改查)物件的屬性和方法。

hasattr(object, name)

用於判斷指定的物件object是否有引數name指定的屬性和方法

getattr(object, name[, default])

用於獲取指定的物件object中名為name的屬性和方法

如果不指定引數default,那麼當object中不存在名為name的屬性和方法時丟擲attributeerror

如果指定了引數default,那麼當object中不存在名為name的屬性和方法時就會返回default

getattr(object, name)等價於:object.name

setattr(object, name, value)

用於在指定的物件object中新增或修改名為引數name的屬性和方法,新增或修改後的值為value

setattr(object, name, value)等價於object.name = value

delattr(object, name)

用於刪除指定的物件object中名為引數name的屬性或方法

delattr(object, name)等價於:del object.name

注意: 只有在不知道物件資訊的情況下,才會去獲取物件資訊。因此,如果可以直接寫:object.name,

就不要寫為getattr(object, 'name')。

class myclass(object):

def __init__(self):

self.x = 1

def do_sth(self):

print("do_sth被呼叫")

mc = myclass()

print(hasattr(mc, 'x')) # true

print(hasattr(mc, "do_sth")) # true

print(hasattr(mc, 'y')) # false

print(getattr(mc, 'x')) # 1

f = getattr(mc, 'do_sth')

f()# print(getattr(mc, 'y'))#attributeerror

print(getattr(mc, 'y', 2))

setattr(mc, 'z', 3)

print(getattr(mc, 'z'))

setattr(mc, 'z', 4)

print(mc.z)

delattr(mc, 'z')

print(hasattr(mc, 'z'))

反射獲取物件

反射 程式設計師的快樂!反射是system.reflection命名空間,可以讀取metadata,並使用metadata 是微軟提供的乙個幫助類庫 metadata 是乙個清單資料,只是記錄有什麼,而不是展示所有的實現 明細賬本。1.建立乙個netcore 解決方案 solution 新建乙個pr...

java反射之獲取Class物件

一 非基本資料型別 1 呼叫靜態方法class.forname string classname 引數為完整的類名,包括包的名字。class.forname p1.person p1是包名,person是類名 class.forname oracle.jdbc.driver.oracledriver...

獲取物件資訊

print type 123 int print type abc str import types def fn pass print type fn types.functiontype print type abs types.builtinfunctiontype print type la...