反射在python中我們可以簡單的理解為通過字串來操作物件的屬性和方法。python中有4個與反射相關的方法
class
animal
(object):
def__init__
(self, name, age)
: self.name = name
self.age = age
an = animal(
"dog",2
)# 判斷an物件是否有name屬性或者方法,有則返回true,沒有則返回false,這裡返回true
print
(hasattr
(an,
"name"))
# 獲取an物件的成員變數address,如果address為屬性,則返回屬性值,
# 如果address為方法,則返回該方法的記憶體位址,如果address不存在則返回***x,即第三個引數
# 當不傳入第三個引數時,如果address存在則正常執行,address不存在則會報錯
print
(getattr
(an,
"address"
,"***x"))
#如果物件an有age屬性,則將age屬性的值改為***
#如果物件an沒有age屬性,則給an新增乙個age屬性並賦值為***
setattr
(an,
"age"
,"***"
)#刪除物件an的name屬性,
#如果name屬性存在則刪除name屬性並返回none,
#如果name屬性不存在則會報錯
print
(delattr
(an,
"name"
))
python 反射 python中的反射
什麼是反射?有時我們要訪問某個變數或是方法時並不知道到底有沒有這個變數或方法,所以就要做些判斷。判斷是否存在字串對應的變數及方法。我們知道訪問變數時是不能加引號的,否則會被當成字串處理。如果要通過字串找到對應的變數,那該怎麼辦呢 反射就是用於解決上面兩個問題而產生的,所謂反射,按我的理解就是反過來告...
python中的反射
反射 對於初學python可能較難理解,但反射是非常有用。試想一下,當別的程式傳入給你寫的這段 乙個變數 var math 這個變數是乙個字串,這個字串是乙個模組或者乙個模組下的某個方法,你需要通過變數來匯入此模組或者方法,如何匯入此模組或方法呢,如果直接執行 import var是會出錯的,因為v...
python中的反射
反射 對於初學python可能較難理解,但反射是非常有用。試想一下,當別的程式傳入給你寫的這段 乙個變數 var math 這個變數是乙個字串,這個字串是乙個模組或者乙個模組下的某個方法,你需要通過變數來匯入此模組或者方法,如何匯入此模組或方法呢,如果直接執行 import var是會出錯的,因為v...