El método Python setattr() se usa para asignar el atributo del objeto a su valor.
Además de las formas de asignar valores a las variables de clase, a través de constructores y funciones de objetos, este método le brinda una forma alternativa de asignar valores.
Sintaxis: setattr(obj, var, val)
Parámetros:
- obj : Objeto cuyo atributo se va a asignar.
- var : atributo del objeto que se tiene que asignar.
- val : valor con el que se va a asignar la variable.
Devoluciones: Ninguna
Ejemplo 1: demostración del funcionamiento de setattr()
Python3
# Python code to demonstrate # working of setattr() # initializing class class Gfg: name = 'GeeksforGeeks' # initializing object obj = Gfg() # printing object before setattr print("Before setattr name : ", obj.name) # using setattr to change name setattr(obj, 'name', 'Geeks4Geeks') # printing object after setattr print("After setattr name : ", obj.name)
Producción:
Before setattr name : GeeksforGeeks After setattr name : Geeks4Geeks
Propiedad de Python setattr()
- setattr() se puede usar para asignar Ninguno a cualquier atributo de objeto.
- setattr() se puede usar para inicializar un nuevo atributo de objeto.
Ejemplo 2: demostración de las propiedades de setattr()
Python3
# Python code to demonstrate # properties of setattr() # initializing class class Gfg: name = 'GeeksforGeeks' # initializing object obj = Gfg() # printing object before setattr print("Before setattr name : ", str(obj.name)) # using setattr to assign None to name setattr(obj, 'name', None) # using setattr to initialize new attribute setattr(obj, 'description', 'CS portal') # printing object after setattr print("After setattr name : " + str(obj.name)) print("After setattr description : ", str(obj.description))
Producción:
Before setattr name : GeeksforGeeks After setattr name : None After setattr description : CS portal
Ejemplo 3: dictado de Python setattr()
Tomemos un diccionario simple «my_dict» que tiene el Nombre, Rango y Asunto como mis Claves y tienen los valores correspondientes como Geeks, 1223, Python. Estamos llamando a una función aquí Dict2Class que toma nuestro diccionario como entrada y lo convierte en clase. Luego recorremos nuestro diccionario usando la función setattr() para agregar cada una de las claves como atributos a la clase.
Python3
# Turns a dictionary into a class class Dict2Class(object): def __init__(self, my_dict): for key in my_dict: setattr(self, key, my_dict[key]) # Driver Code if __name__ == "__main__": # Creating the dictionary my_dict = {"Name": "Geeks", "Rank": "1223", "Subject": "Python"} result = Dict2Class(my_dict) # printing the result print("After Converting Dictionary to Class : ") print(result.Name, result.Rank, result.Subject) print(type(result))
Producción:
After Converting Dictionary to Class : Geeks 1223 Python <class '__main__.Dict2Class'>
Excepción de Python setattr()
Aquí crearemos atributos de solo lectura del objeto y si tratamos de establecer el valor del atributo usando un
Python3
class Person: def __init__(self): self._name = None def name(self): print('name function called') return self._name # for read-only attribute n = property(name, None) p = Person() setattr(p, 'n', 'rajav')
Producción:
---> 16 setattr(p, 'n', 'rajav') AttributeError: can't set attribute
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA