Función Python getattr()

Python3 内置函数Funciones integradas de Python3


getattr()Es una función integrada de Python que se utiliza para obtener el valor de un atributo de un objeto.

getattr()Nos permite acceder dinámicamente a los atributos de un objeto, en lugar de acceder estáticamente mediante el punto (.). Esto es muy útil cuando se manejan atributos desconocidos.

Glosario: getattr 是 get attribute(获取属性)的缩写。


Sintaxis básica y parámetros

Formato de sintaxis

getattr(object, name)
getattr(object, name, default)

Descripción de parámetros

  • Parámetro object:
    • Tipo: cualquier objeto
    • Descripción: el objeto del que se obtienen los atributos.
  • Parámetro name:
    • Tipo: cadena
    • Descripción: el nombre del atributo.
  • Parámetro default(Opcional):
    • Tipo: cualquier valor
    • Descripción: el valor predeterminado que se devuelve si el atributo no existe.

Descripción de la función

  • Valor de retorno: Devuelve el valor del atributo.
  • Excepción: Si el atributo no existe y no hay un valor predeterminado, se lanza AttributeError.

Ejemplos

Ejemplo 1: Uso básico

Ejemplo

class Person:
    def __init__(self):
        self.name = "Tom"
        self.age = 20

p = Person()

# Obtener atributo
print(getattr(p, "name"))   # Salida: Tom
print(getattr(p, "age"))    # Salida: 20

# Usando punto
print(p.name)               # Salida: Tom

Resultado esperado al ejecutar:

Tom
20
Tom

Análisis del código:

  1. `getattr()` tiene el mismo efecto que el acceso con punto.
  2. La ventaja de `getattr()` es que se puede especificar el nombre del atributo con una cadena.

Ejemplo 2: Uso de valores predeterminados

Ejemplo

class Person:
    def __init__(self):
        self.name = "Tom"

p = Person()

# Obtener atributo existente
print(getattr(p, "name", "Desconocido"))  # Salida: Tom

# Obtener atributo inexistente (con valor predeterminado)
print(getattr(p, "age", 0))        # Salida: 0
print(getattr(p, "city", "Pekín"))  # Salida: Pekín

# Obtener atributo inexistente (sin valor predeterminado)
try:
    print(getattr(p, "gender"))
except AttributeError as e:
    print(f"El atributo no existe: {e}")

Resultado esperado al ejecutar:

Tom
0
北京
属性不存在: 'Person' object has no attribute 'gender'

Análisis del código:

  • El tercer parámetro proporciona un valor predeterminado y evita excepciones.
  • Esto es útil al manejar atributos opcionales.

Ejemplo 3: Acceso dinámico

Ejemplo

# Seleccionar atributo dinámicamente
data = {"name": "Tom", "age": 20}
field = "name"
print(getattr(data, field))  # Acceder mediante cadena

# Combinar con setattr
class Person:
    pass

p = Person()

# Establecer atributo dinámicamente
fields = ["name", "age", "city"]
values = ["Tom", 20, "Beijing"]

for field, value in zip(fields, values):
    setattr(p, field, value)

# Obtener todos los atributos dinámicamente
for field in fields:
    print(f"{field}: {getattr(p, field)}")

# hasattr combinado con getattr
if hasattr(p, "name"):
    print(f"El nombre es: {getattr(p, 'name')}")

Resultado de la ejecución:

Al ejecutarlo en un entorno real, se mostrarán los atributos establecidos dinámicamente.

getattr()Es una función muy importante en la programación dinámica de Python.


Python3 内置函数Funciones integradas de Python3


Otras extensiones