Python setattr() method
Last Updated :
19 Jun, 2023
Python setattr() method is used to assign the object attribute its value. The setattr() can also be used to initialize a new object attribute. Also, setattr() can be used to assign None to any object attribute.
Example :
Python3
class Person:
def __init__( self ):
pass
p = Person()
setattr (p, 'name' , 'kiran' )
print (f "name: {p.name}" )
|
Output :
name: kiran
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() Examples
How setattr() works in Python?
In the given example, we have defined a animal class with a class variable name and we are showing how can we set the value of the variable with setattr().
Python3
class Animal:
name = 'lucky'
p = Animal()
print ( 'Before modification:' , p.name)
setattr (p, 'name' , 'Woozoo' )
print ( 'After modification:' , p.name)
|
Output :
Before modification: lucky
After modification: Woozoo
When the attribute is not found in setattr() in Python
In this example, we have defined a Gfg class and we have set the name and descr variables to None after that we have set the variable with setattr() and printed it. After that, we created a variable named a value that was not found in the class with setattr() and printing it in Python.
Python3
class Gfg:
name = None
descr = None
gfg = Gfg()
print ( "Before using setattr:\n"
f "\tname: {gfg.name}\n"
f "\tdescr: {gfg.descr}" )
setattr (gfg, "name" , "GeeksForGeeks" )
setattr (gfg, "descr" , "CS Portal" )
print ( "After using setattr:\n"
f "\tname: {gfg.name}\n"
f "\tdescr: {gfg.descr}" )
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
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])
if __name__ = = "__main__" :
my_dict = { "Name" : "Geeks" ,
"Rank" : "1223" ,
"Subject" : "Python" }
result = Dict2Class(my_dict)
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
n = property (name, None )
p = Person()
setattr (p, 'n' , 'rajav' )
|
Output :
---> 16 setattr(p, 'n', 'rajav')
AttributeError: can't set attribute
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...