python中getattr函数使用方法 getattr实现工厂模式
看了下函数本身的doc 复制代码 代码如下: getattr(object,name[,default]) -> value Get a named attribute from an object; getattr(x,'y') is equivalent to x.y. 解释的很抽象 告诉我这个函数的作用相当于是 object.name 试了一下getattr(object,name)确实和object.name是一样的功能.只不过这里可以把name作为一个变量去处理书上的例子很好的说明了这个函数的功用,使用getattr可以轻松实现工厂模式。 例:一个模块支持html、text、xml等格式的打印,根据传入的formate参数的不同,调用不同的函数实现几种格式的输出 复制代码 代码如下: import statsout def output(data,format="text"): output_function = getattr(statsout,"output_%s" %format) return output_function(data) [code] 这个例子中可以根据传入output函数的format参数的不同 去调用statsout模块不同的方法(用格式化字符串实现output_%s) 返回的是这个方法的对象 就可以直接使用了 如果要添加新的格式 只需要在模块中写入新的方法函数 在调用output函数时使用新的参数就可以使用不同的格式输出 确实很方便
Python's getattr function is used to fetch an attribute from an object,using a string object instead of an identifier to identify the attribute. In other words,the following two statements are equivalent: [code] The getattr function can be used on any object that supports dotted notation (by implementing the __getattr__ method). This includes class objects,modules,and even function objects. path = getattr(sys,"path") result = obj.method(args) func = getattr(obj,"method") result = getattr(obj,"method")(args) try: func = getattr(obj,"method",None) func = getattr(obj,None) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |