反射這個(gè)術(shù)語在很多語言中都存在,并且存在大量的運(yùn)用,今天我們說說什么是反射,反射主要是指程序可以訪問、檢測(cè)和修改它本身狀態(tài)或行為的一種能力,在python中一切皆對(duì)象(類,實(shí)例,模塊等等都是對(duì)象),那么我們就可以通過反射的形式操作對(duì)象相關(guān)的屬性。
Python中的反射主要有下面幾個(gè)方法:
# 1.hasattr(object,name): 判斷對(duì)象中有沒有一個(gè)name字符串對(duì)應(yīng)的方法或?qū)傩? 2.getattr(object, name, default=None): 獲取對(duì)象name字符串屬性的值,如果不存在返回default的值# 3.setattr(object, key, value): 設(shè)置對(duì)象的key屬性為value值,等同于object.key = value# 4.delattr(object, name): 刪除對(duì)象的name字符串屬性應(yīng)用1:
class Person: def __init__(self,name,age,gender): self.name = name self.age = age self.gender = genderyuan=Person("yuan",22,"male")print(yuan.name)print(yuan.age)print(yuan.gender)while 1: # 由用戶選擇查看yuan的哪一個(gè)信息 attr = input(">>>") if hasattr(yuan, attr): val = getattr(yuan, attr) print(val) else: val=input("yuan 沒有你該屬性信息!,請(qǐng)?jiān)O(shè)置該屬性值>>>") setattr(yuan,attr,val)應(yīng)用2:
class FTP(object): def __init__(self): self.run() def run(self): print(''' 提示: 上傳: put 路徑/文件名稱 下載: get 路徑/文件名稱 ''' ) while 1: input_str=input(">>>") action,params=input_str.split(" ") if hasattr(self,action): getattr(self,action)() else: print("不存在該方法") def put(self): print("上傳...") def get(self): print("下載...")ftp=FTP()以上內(nèi)容為大家介紹了Python中什么是反射以及使用方法,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://www.dietsnews.net/