Python物件導向 反射

2021-08-18 22:01:00 字數 1301 閱讀 8412

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...