Python setattr() method
Python setattr() method is used to assign the object attribute its value.
Python setattr() Function Syntax
Syntax : setattr(obj, var, val)
Parameters :
- obj : Object whose which attribute is to be assigned.
- var : object attribute which has to be assigned.
- val : value with which variable is to be assigned.
Returns : None
Python setattr() Function Example
Python3
class Person: def __init__( self ): pass p = Person() setattr (p, 'name' , 'kiran' ) print (f "name: {p.name}" ) |
Output:
name: kiran
Python setattr() property
- setattr() can be used to assign None to any object attribute.
- setattr() can be used to initialize a new object attribute.
Example 1: Demonstrating properties of setattr()
Using setattr() we can create or update attributes of a class.
Python3
class Gfg: name = None descr = None # initializing object gfg = Gfg() print ( "Before using setattr:\n" f "\tname: {gfg.name}\n" f "\tdescr: {gfg.descr}" ) # setting value using setattr setattr (gfg, "name" , "GeeksForGeeks" ) setattr (gfg, "descr" , "CS Portal" ) print ( "After using setattr:\n" f "\tname: {gfg.name}\n" f "\tdescr: {gfg.descr}" ) # creating new attribute using setattr setattr (gfg, 'value' , 5 ) print (f "\nNew attribute created, gfg.value: {gfg.value}" ) |
Output:
Before using setattr: name: None descr: None After using setattr: name: GeeksForGeeks descr: CS Portal New attribute created, gfg.value: 5
Example 2: Python setattr() dict
Here we are creating attributes of the class ‘Dict2Class’ dynamically using setattr() function by passing a dictionary with some keys and values to the __init__() method of the class.
Python3
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)) |
Output:
After Converting Dictionary to Class : Geeks 1223 Python <class '__main__.Dict2Class'>
Python setattr() exception
Here we will create read-only attributes of the object using property() function in Python and if we try to set the attribute’s value using setattr() function then an exception will rise.
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' ) |
Output:
---> 16 setattr(p, 'n', 'rajav') AttributeError: can't set attribute
Please Login to comment...