Python setattr() function is used to assign a new value to the attribute of an object/instance. Setattr in python sets a new specified value argument to the specified attribute name of a class/function’s defined object.
Sometimes a situation arises where an attribute has already been assigned a value in the class or function, but the programmer needs to change it as per their needs. In such situations, setattr in python comes to the rescue. Python setattr() is a built-in function that helps the user change an object’s attribute value by explicitly defining it.
This method provides an alternate means to assign values to class variables, in addition to constructors and object functions. It comes in handy when we want to add a new attribute to an object and assigning it a value. The Python setattr() function accepts 3 parameters. The syntax is as follows:
Syntax for python setattr
setattr(object, name, value)
python setattr Parameters
- object = instance of the function whose attribute is to be set
- name = variable name/attribute name
- value = value to be set for the attribute
Return value of setattr python
The setattr() function returns None value.
Example 1: How setattr() works in Python?
When we specify the attribute name parameter to assign a value in the setattr() function, note that we must always enclose it with quotes or apostrophes i.e. “ ” or ‘ ’. This attribute name parameter should be passed as a string value.
# Python program to illustrate setattr() function class Details: name = 'Sam' age = 24 # Create an object of the class d = Details() print('Name before modification:', d.name) print('Age before modification:', d.age) setattr(d, 'name', 'Timmy') setattr(d, 'age', 27) print('Name after modification:', d.name) print('Age after modification:', d.age)
Name before modification: Sam Age before modification: 24 Name after modification: Timmy Age after modification: 27
Note – The attribute parameter in the setattr() function is case-sensitive. Hence, double-check before using the attribute names to change their values.
Example 2: When an attribute is not found in setattr python
One of the most important properties of setattr() is that it can be used to create and initialize a new attribute in the object if it is not found. We can assign the ‘None’ value to the attribute. We can also assign a numeric or alphabetical value to the newly created attribute.
# Python program to illustrate setattr() function class Car: brand = 'BMW' # Create an object of the class c = Car() setattr(c, 'brand', 'Jaguar') print('New Car brand value:', c.brand) setattr(c, 'type', None) print('After setattr type:', c.type) setattr(c, 'price', 35000) print('After setattr price:', c.price)
New Car brand value: Jaguar After setattr type: None After setattr price: 35000
FAQs on setattr in python
Q1. What is setattr in Python?
Sometimes a situation arises where an attribute has already been assigned a value in the class or function, but the programmer needs to change it as per their needs. For this purpose, Python provides a setattr() built-in function which is used by the programmers to efficiently change the attribute values of an object in the program.
Q2. What is setattr() used for?
The Python setattr() function sets a new specified value argument to the specified attribute name of a class/function’s defined object. This method provides an alternate means to assign values to class variables, in addition to constructors and object functions. It comes in handy when we want to add a new attribute to an object and assigning it a value. The Python setattr() function accepts 3 parameters. It accepts the object name, attribute name, and value as inputs and sets object attribute to value.
setattr(object, attribute, value)
# Python program to illustrate setattr() function class Sports: category = 'Athletics' # Create an object of the class s = Sports() print('Old Sports category value:', s.category) setattr(s, 'category', 'Cricket') print('New Sports category value:', s.category)
Old Sports category value: Athletics New Sports category value: Cricket
Q3. What are getattr and setattr in Python?
Python setattr() and getattr() goes hand-in-hand. As we have already seen what setattr() does; The getattr() function in Python is being used to retrieve the value of an object’s attribute; and if no attribute of that object is discovered, the default value is returned. The function getattr() supports many parameters.
getattr(object, attribute, default_value)
default_value = When an attribute is not found, this specified value is returned
class Employee: company = 'Microsoft' name = 'Eric Williams' age = 30 e = Employee() setattr(e, 'company', 'Apple') print('New company:', e.company) print(getattr(e, 'name', 'John Hastings')) # as name attribute is already present in class Employee, it will print the original value print(getattr(e, 'salary', 25000)) # salary attribute not found, it prints default value 25000
New company: Apple Eric Williams 25000
Q4. What does AttributeError mean in Python?
When you try to call an attribute of an object whose type does not support that function, Python throws an AttributeError. In Python, AttributeError is an error that occurs when an attribute reference or assignment fails. Though there are few chances of getting this error, the probability cannot be ignored completely. Let us understand this error by looking at the following example.
num = 10 num.append(20)
Traceback (most recent call last): File "", line 2, in AttributeError: 'int' object has no attribute 'append'
In the above program, we try to append an integer value to a variable that has stored another integer value. Logically this is not possible and even Python does not support this. Hence the Python compiler throws an AttributeError exception.
class Person: def __init__(self): self.name = 'John' obj = Person() print(obj.name) print(obj.city)
John Traceback (most recent call last): File "", line 7, in AttributeError: 'Person' object has no attribute 'city'