1.什麼是反射
反射的概念是由smith在2023年首次提出的,主要是指程式可以訪問、檢修和修改它本身狀態或行為的一種能力(自省)。這一概念的提出很快引發了計算科學領域關於應用反射性的研究。它率先被程式語言的設計領域所採用。
3.可以實現自省的四個函式
舉個例子:
class people:
country="china"
def __init__(self,name):
self.name=name
def tell(self):
print('%s is good' %self.name)
obj=people('omg')
'''1、hasattr(object,name)
判斷object中沒有乙個name字串對應的方法和屬性
'''print(hasattr(people,'country'))
print('country' in people.__dict__)
print(hasattr(obj,'name'))
print(hasattr(obj,'country'))
print(hasattr(obj,'tell'))
'''2、getattr(object,name,default=none)
'''x=getattr(people,'country1',none)
print(x)
f=getattr(obj,'tell',none)#obj.tell
print(f == obj.tell)
f()obj.tell()
'''3、setattr(x,y,v)
'''people.x=111
setattr(people,'x',111)
print(people.x)
obj.age=18
setattr(obj,"age",18)
print(obj.__dict__)
'''4、delattr(x,y)
'''del people.country
delattr(people,"country")
print(people.__dict__)
del obj.name
delattr(obj,"name")
print(obj.__dict__)
Python 物件導向 反射 自省
反射 程式可以訪問,檢測和修改它本身狀態或行為的一種能力 自省 下面就介紹四種實現自省的函式,適用於類和物件 1,判斷object中有沒有乙個name字串對應的屬性或者方法 hasattr object,name 2,獲取object中name字串對應的屬性值或者方法位址,其中default引數的作...
物件導向 反射
內建函式 1.isinstance 判斷乙個物件和乙個類有沒有血緣關係class a pass class b a pass a b print isinstance a,b true print isinstance a,a true print type a is b true print ty...
物件導向之反射
反射 python中的反射功能是由以下四個內建函式提供 hasattr getattr setattr delattr,改四個函式分別用於對物件內部執行 檢查是否含有某成員 獲取成員 設定成員 刪除成員。class foo object def init self self.name wupeiqi...