getattr是python里的一個內建函數
getattr()這個方法最主要的作用是實現反射機制。也就是說可以通過字符串獲取方法實例。這樣,你就可以把一個類可能要調用的方法放在配置文件里,在需要的時候動態加載。
python里面跟getattr相關的有hasattr,setattr,delattr ,那么我們通過下面的例子,來詳細的說說他們的用法。
1 class Xiaorui: 2 def __init__(self): 3 self.name = 'xiaorui' 4 5 def setName(self, name): 6 self.name = name 7 8 def getName(self): 9 return self.name 10 11 def greet(self): 12 print "Hello, i'm %s" % self.name 13 14 foo = Xiaorui() 15
16print hasattr(foo, 'setName')
一. hasattr(object,name)
判斷object中是否具有name屬性,例如:
print print hasattr(foo, 'setName') #判斷setName是否存在,存在則返回True。
True
二. getattr(object,name,default)
如果存在name屬性(方法)則返回name的值(方法地址)否則返回default值。
print getattr(foo, 'name', 'NA') #存在name屬性,所以返回其value xiaorui print getattr(foo, 'age', 'NA') NA
三. setattr(object,name,default)
setattr(foo,’age’,’18’) #字符串可能會列出一個現有的屬性(或一個新的屬性)。這個函數將值賦給屬性的
setattr(foo, 'age', '18') print getattr(foo, 'age', 'NA') 18
四. delattr(object,’name’)
delattr(foo,’name’)#刪除屬性name,原值為‘xiaorui’
delattr(foo, 'name') print getattr(foo, 'name', 'not find')
not find