Python3.0(Py3K)之getattr函数

 python是面向对象的语言,而python中的函数也是对象,通过使用 getattr 函数,可以得到一个直到运行时才知道名称的函数的引用。例如:

 

Python代码 复制代码
  1. li = ["Larry""Curly"]   
  2. getattr(li, "pop")             
li = ["Larry", "Curly"]
getattr(li, "pop")           

    getattr函数返回的是list的pop函数的引用,方法名称是作为一个字符串参数传递给 getattr 函数的。你可以通过getattr(object,"function")()来使用一个函数。例如:

Python代码 复制代码
  1. getattr(li, "append")("Moe")   
getattr(li, "append")("Moe") 

    getattr 不仅仅适用于内置数据类型,也可作用于模块。使用方法和内置数据类型基本相同。

    getattr 常见的使用模式是作为一个分发者。在《Dive Into Python》有一个很经典的例子。

    让我们假设有一个以 HTMLXML 和普通文本格式打印站点统计的程序。输出格式在命令行中指定,或者保存在配置文件中。statsout 模块定义了三个函数:output_htmloutput_xmloutput_text 。然后主程序定义了唯一的输出函数,如下:

Python代码 复制代码
  1. import statsout   
  2. def output(data, format="text"):                                 
  3.     output_function = getattr(statsout, "output_%s" % format)    
  4.     return output_function(data)    
import statsout
def output(data, format="text"):                              
    output_function = getattr(statsout, "output_%s" % format) 
    return output_function(data)  

    output 函数接收一个必备参数 data ,和一个可选参数 format 。如果没有指定 format 参数,其缺省值是 text 并完成普  通文本输出函数的调用。你可以连接 format 参数值和 "output_" 来创建一个函数名称作为参数值,然后从 statsout 模块中取得该函数。这种方式允许今后很容易的扩展程序以支持其它的输出格式,而且无需修改分发函数。所要做的仅仅是向 statsout 中添加一个函数,比如 output_pdf ,之后只要将 “pdf” 作为 format 的参数值传递给 output 函数即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值