Función setattr() de Python

Python3 内置函数Funciones integradas de Python3


setattr()Es una función integrada de Python utilizada para establecer atributos de objetos.

A diferencia de la asignación directa con punto (.),setattr()te permite establecer dinámicamente los atributos de un objeto mediante cadenas. Esto es muy útil cuando necesitas establecer atributos según nombres de variables o manejar atributos desconocidos.

Definición de la palabra: setattrSíset attributeAbreviatura de (establecer atributo).


Sintaxis básica y parámetros

Formato de sintaxis

setattr(obj, name, value)

Descripción de parámetros

  • Parámetro obj:
    • Tipo: Cualquier objeto
    • Descripción: El objeto al que se le establecerá el atributo.
  • Parámetro name:
    • Tipo: Cadena
    • Descripción: El nombre del atributo a establecer (en forma de cadena).
  • Parámetro value:
    • Tipo: Cualquier valor
    • Descripción: El valor a establecer.

Descripción de la función

  • Valor de retorno: Sin valor de retorno (retornaNone)。
  • Función correspondiente: Se usa junto congetattr()la funcióngetattrpara obtener atributos.

Ejemplos

Ejemplo 1: Uso básico

Ejemplo

# Crear una clase simple
class Person:
    pass

# Crear un objeto
p = Person()

# Usar setattr para establecer atributos
setattr(p, 'name', 'Tom')
setattr(p, 'age', 20)
setattr(p, 'city', 'Beijing')

# Verificar que el atributo se ha establecido
print(p.name)    # Salida: Tom
print(p.age)     # Salida: 20
print(p.city)    # Salida: Beijing

# Usar getattr para obtener atributos
print(getattr(p, 'name'))  # Salida: Tom

Resultado esperado de la ejecución:

Tom
20
Beijing
Tom

Análisis del código:

  1. setattr(obj, 'name', 'Tom')Equivale aobj.name = 'Tom'。
  2. El nombre del atributo se pasa como cadena, lo que permite establecerlo dinámicamente.
  3. Se puede usar junto congetattr()en combinación.

Ejemplo 2: Configuración dinámica de atributos

Ejemplo

class Student:
    pass

# Establecer múltiples atributos dinámicamente
student = Student()
fields = ['name', 'age', 'grade', 'school']
values = ['Lily', 18, 'A', 'MIT']

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

# Imprimir todos los atributos
for field in fields:
    print(f"{field}: {getattr(student, field)}")

# Establecer un atributo que no existe
setattr(student, 'major', 'Computer Science')
print(student.major)  # Salida: Computer Science

Resultado esperado de la ejecución:

name: Lily
age: 18
grade: A
school: MIT
Computer Science

Análisis del código:

  • Se pueden establecer múltiples atributos dinámicamente mediante bucles.
  • setattr puede agregar nuevos atributos a un objeto.
  • Esto es útil al manejar archivos de configuración o entradas de usuario.

Ejemplo 3: Combinación con __dict__

Ejemplo

# Ver el __dict__ del objeto
class Car:
    def __init__(self):
        self.brand = "Toyota"

car = Car()
print(car.__dict__)  # Salida: {'brand': 'Toyota'}

# Usar setattr para agregar atributos
setattr(car, 'model', 'Camry')
setattr(car, 'year', 2024)

print(car.__dict__)  # Salida: {'brand': 'Toyota', 'model': 'Camry', 'year': 2024}

# Verificar si el atributo existe
if hasattr(car, 'brand'):
    print(f"Marca: {getattr(car, 'brand')}")

Resultado esperado de la ejecución:

{'brand': 'Toyota'}
{'brand': 'Toyota', 'model': 'Camry', 'year': 2024}
品牌: Toyota

setattr()Normalmente se usa junto congetattr()、hasattr()、delattr()para formar un conjunto completo de herramientas de operación de atributos.


Python3 内置函数Funciones integradas de Python3


Otras extensiones