Python setattr() method (original) (raw)
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