We use the Python setattr() function to assign a value to an object’s attribute. There might arise a situation where we might want to fetch the values assigned to the attributes. To provide this functionality, Python getattr() built-in function is used. Let us understand more about the Python getattr() function, its syntax, and its various examples in this article.
- Python getattr() is a built-in function that is used to return the value of an attribute of a specific object/instance.
- The Python getattr() function is used to obtain an object’s attribute value and also provides the option of executing the default value if the attribute is not available.
Basically, Python’s getattr() built-in function is used to retrieve the value of the object’s attribute with the name string. If this specified attribute does not exist, then the value specified as an optional third default argument is returned. This happens only if the default_value is specified as a 3rd parameter. If neither of these exists, an AttributeError is thrown. The getattr() function accepts 2 or 3 values as its parameter.
getattr(object, name, default_value)
object = instance of the function whose attribute is to be set
name = variable name/attribute name
default_value = When an attribute cannot be found, a value is to be returned. It is an Optional value.
Note – When we specify the attribute name parameter to fetch a value in the getattr() 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.
Return value from getattr()
Python getattr() returns one of the following –
- Returns value of the specified attribute of an object
- Returns default value, if the attribute is not found
- If the named attribute is not found and the default is not defined, an AttributeError exception is thrown.
Python getattr() also has an alternative. You must have seen this as it is the most commonly used method.
So why use the getattr() function?
There are two basic reasons for this:
- If the attribute does not exist, getattr() returns a default value, whereas the dot syntax returns an error.
- getattr() allows you to access an attribute dynamically by using a string instead of its name. You might get the string as a user input, in which case you can’t utilize the dot syntax object. attribute because an attribute is a string rather than a name.
Example 1: How does getattr() work in Python?
In the following example, we have implemented a class ‘Employee’ with attributes ‘name’, ‘salary’, and ‘designation’. We have then created an object ‘e’ and then we have fetched the value of salary from object ‘e’ using the Python getattr() function.
# Python program to illustrate getattr() function class Employee: name = 'David' salary = 55000 designation = 'Marketing Head' e = Employee() print('Salary of David is:', getattr(e, 'salary')) #This is equivalent to print('Salary of David is:', e.salary)
Salary of David is: 55000 Salary of David is: 55000
Example 2: getattr() when named attribute is not found
# Python program to illustrate getattr() function class Employee: name = 'David' salary = 55000 designation = 'Marketing Head' e = Employee() print('Age of David:', getattr(e, 'age', 56)) print('') print('Age of David:', getattr(e, 'age'))
Age of David: 56 Traceback (most recent call last): File "", line 10, in AttributeError: 'Employee' object has no attribute 'age'
In the above program, the attribute ‘age’ is missing from the class ‘Employee’. For the first print statement, getattr() creates a new attribute for the object only if the default value is specified in the argument. In the second print statement, the ‘age’ attribute is missing from the class as well as the default value. Hence, the Python interpreter displays an ArrtibuteError.
Frequently Asked Questions
Q1. What is getattr() used for in Python?
We use the Python setattr() function to assign a value to an object’s attribute. There might arise a situation where we might want to fetch the values assigned to the attributes. To provide this functionality, Python getattr() built-in function is used. Basically, Python’s getattr() built-in function is used to retrieve the value of the object’s attribute with the name string.
Q2. What is __getattr__ in Python?
Python calls the __getattr__ method whenever the requested attribute hasn’t already been defined. It means that. When an attribute lookup does not find the attribute in the typical places, this method is called. This function should either return the (computed) attribute value or throw an AttributeError exception if it fails.
It should be noted that if the attribute is discovered using the standard approach, __getattr__() is not invoked.
Q3. What is getattr() and setattr() in Python?
Python setattr() and getattr() goes hand-in-hand. As we have already seen what getattr() does; The setattr() function is used to assign a new value to an object/instance attribute.
setattr(object, name, value)
value = value to be set for the attribute
# 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