Método Python setattr()

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *