码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-01 22:38:22      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:

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()

标签:

原文地址:http://my.oschina.net/u/573270/blog/408952

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!