Función setattr() de Python
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 (retorna
None)。 - Función correspondiente: Se usa junto con
getattr()la funcióngetattrpara obtener atributos.
Ejemplos
Ejemplo 1: Uso básico
Ejemplo
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:
setattr(obj, 'name', 'Tom')Equivale aobj.name = 'Tom'。- El nombre del atributo se pasa como cadena, lo que permite establecerlo dinámicamente.
- Se puede usar junto con
getattr()en combinación.
Ejemplo 2: Configuración dinámica de atributos
Ejemplo
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
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.
Funciones integradas de Python3
Otras extensiones