Python的getattr(),setattr(),delattr(),hasattr()

來源:互聯網
上載者:User

標籤:

getattr()函數是Python自省的核心函數,具體使用大體如下:

擷取對象引用getattr
Getattr用於返回一個對象屬性,或者方法

  1. class A:   

  2.     def __init__(self):   

  3.         self.name = ‘zhangjing‘  

  4.     #self.age=‘24‘

  5.     def method(self):   

  6.         print"method print"  

  7.   

  8. Instance = A()   

  9. print getattr(Instance , ‘name, ‘not find‘) #如果Instance 對象中有屬性name則列印self.name的值,否則列印‘not find‘

  10. print getattr(Instance , ‘age‘, ‘not find‘)   #如果Instance 對象中有屬性age則列印self.age的值,否則列印‘not find‘

  11. print getattr(a, ‘method‘, ‘default‘)   

  12. #如果有方法method,否則列印其地址,否則列印default   

  13. print getattr(a, ‘method‘, ‘default‘)()   

  14. #如果有方法method,運行函數並列印None否則列印default  

註:使用getattr可以輕鬆實現原廠模式。 
例:一個模組支援html、text、xml等格式的列印,根據傳入的formate參數的不同,調用不同的函數實現幾種格式的輸出

  1. import statsout   

  2. def output(data, format="text"):                                

  3.      output_function = getattr(statsout, "output_%s" % format)   

  4.     return output_function(data)

>>> li=["zhangjing","zhangwei"]

>>> getattr(li,"pop")
<built-in method pop of list object at 0x011DF6C0>
>>> li.pop
<built-in method pop of list object at 0x011DF6C0>

>>> li.pop()
‘zhangwei‘

>>> getattr(li,"pop")()
‘zhangjing‘

>>>getattr(li, "append")("Moe") 


Python的getattr(),setattr(),delattr(),hasattr()

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.