反射這個術語在很多語言中都存在,并且存在大量的運用,今天我們說說什么是反射,反射主要是指程序可以訪問、檢測和修改它本身狀態(tài)或行為的一種能力,在python中一切皆對象(類,實例,模塊等等都是對象),那么我們就可以通過反射的形式操作對象相關的屬性。
Python中的反射主要有下面幾個方法:
# 1.hasattr(object,name): 判斷對象中有沒有一個name字符串對應的方法或屬性# 2.getattr(object, name, default=None): 獲取對象name字符串屬性的值,如果不存在返回default的值# 3.setattr(object, key, value): 設置對象的key屬性為value值,等同于object.key = value# 4.delattr(object, name): 刪除對象的name字符串屬性應用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的哪一個信息 attr = input(">>>") if hasattr(yuan, attr): val = getattr(yuan, attr) print(val) else: val=input("yuan 沒有你該屬性信息!,請設置該屬性值>>>") setattr(yuan,attr,val)應用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()以上內容為大家介紹了Python中什么是反射以及使用方法,希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://m.2667701.com/