python自省函數getattr的用法


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM