`

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 函数即可。

分享到:
评论

相关推荐

    python中的内置函数getattr()介绍及示例

    在python的官方文档中:getattr()的解释如下: getattr(object, name[, default]) Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object's...

    Python中getattr函数和hasattr函数作用详解

    ### Python中getattr函数和hasattr函数作用详解 #### 一、引言 在Python编程语言中,`getattr`和`hasattr`是非常实用且强大的内置函数,它们在处理对象属性时提供了灵活的操作方式。本文将深入探讨这两个函数的用法...

    浅谈python中的getattr函数 hasattr函数

    ### Python中的`getattr`与`hasattr`函数详解 #### 一、引言 在Python编程语言中,`getattr`和`hasattr`是两个非常有用的内置函数,它们主要用于对象属性的操作,尤其在动态地访问对象属性时发挥着重要作用。本文将...

    python的getattr()函数

    python的getattr()函数的说明与代码示例

    python中getattr函数使用方法 getattr实现工厂模式

    在Python编程语言中,`getattr()`函数是一个非常实用的内置函数,它允许我们动态地从对象中获取属性。函数的基本语法是`getattr(object, name[, default])`,它接受三个参数: 1. `object`:这是一个对象,我们需要...

    详解Python的hasattr() getattr() setattr() 函数使用方法

    在Python中,hasattr()、getattr()、setattr()是三个用于操作对象属性和方法的内置函数。本文将详细讲解这三个函数的使用方法和应用场景。 首先,我们来看看hasattr()函数。这个函数用于判断一个对象中是否存在特定...

    浅谈 Python 魔法函数 __getattr__ 与 __getattribute__

    在Python编程语言中,有一些特殊的内置方法被称为“魔法函数”(Magic Methods),它们通常以两个下划线开头和结尾,例如`__getattr__`和`__getattribute__`。这两个魔法函数都涉及到对象属性的访问,但它们在处理不...

    详解Python中 __get__和__getattr__和__getattribute__的区别

    ### 详解 Python 中 `__get__` 和 `__getattr__` 与 `__getattribute__` 的区别 在 Python 编程语言中,对象的属性访问机制是非常灵活且强大的。当我们试图通过点号(`.`)操作符去访问一个对象的属性时,Python 会...

    python中根据字符串调用函数的实现方法

    `getattr()`是Python内置的函数,用于获取对象的指定属性。如果该属性是一个函数,那么我们就可以通过它来执行对应的函数。 例如,假设我们有一个模块`attr.py`,其中定义了两个函数`kel()`和`smile()`: ```...

    浅谈使用Python内置函数getattr实现分发模式

    在Python编程中,`getattr()`是一个内置函数,用于获取对象的属性。本文主要探讨了如何利用`getattr()`实现分发模式,这是一种设计模式,用于根据特定条件选择并执行不同的方法。分发模式在处理多态性或动态行为时...

    Python getattr()函数使用方法代码实例

    ### Python `getattr()` 函数详解及应用场景 #### 一、`getattr()` 函数概述 `getattr()` 是Python内置的一个函数,其主要功能是通过给定的对象和属性名(字符串形式)来获取对象的属性或方法。这对于实现动态加载...

    在Python中通过getattr获取对象引用的方法

    getattr函数 (1)使用 getattr 函数,可以得到一个直到运行时才知道名称的函数的引用。 >>> li = ["Larry", "Curly"] >>> li.pop // 该语句获取列表的 pop 方法的引用,注意该语句并不是调用 pop 方法,调用 pop ...

    python通过函数名调用函数的几种场景

    在Python编程中,有时我们需要根据特定条件或动态数据来决定调用哪个函数。本文将详细介绍如何通过函数名来实现这种动态调用的功能。这在处理复杂逻辑或灵活配置时非常有用。 一、函数名调用的基本概念 在Python中...

    Python内置函数案例演示.pdf

    Python作为一门广泛使用的高级编程语言,其内置函数的丰富性和易用性是其受欢迎的原因之一。Python的内置函数可以直接在Python环境中使用,无需额外导入模块。初学者通过学习和应用这些内置函数,可以更快速地编写...

    python常用的函数[文].pdf

    Python常用函数 Python是一种高级编程语言,具有简单易学、灵活、可扩展等特点。Python提供了许多内置函数和模块,可以帮助开发者快速构建高效、可靠的软件系统。本文总结了Python中常用的函数和模块,包括内置函数...

    python内置函数大全

    Python内置函数涉及了Python编程语言中最基础的函数集合,它们是Python标准库的一部分,允许程序员在不引用外部模块的情况下执行常见操作。下面我将详细介绍一些常用的Python内置函数,并对它们的功能进行解释。 1....

    对比Python中__getattr__和 __getattribute__获取属性的用法

    在Python中,`__getattr__` 和 `__getattribute__` 都是用来处理对象属性访问的特殊方法,但它们在何时以及如何被调用上有显著的区别。了解这些区别对于编写更灵活、更具动态特性的代码至关重要。 首先,`__getattr...

Global site tag (gtag.js) - Google Analytics