首页 > 编程语言 > 详细

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

时间:2015-05-01 22:38:05      阅读:370      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!