How to check if an object has an attribute in Python?

Better Stack Team
Updated on January 26, 2023

To check if an object has an attribute in Python, you can use the hasattr function. This function takes two arguments: the object and the attribute name as a string. It returns True if the object has the attribute, and False if it does not.

For example:

 
class MyClass:
    def __init__(self):
        self.attribute = 'attribute'

obj = MyClass()
hasattr(obj, 'attribute')  # returns True
hasattr(obj, 'other_attribute')  # returns False

You can also use the getattr function to check if an object has an attribute, but hasattr is generally more convenient.

 
class MyClass:
    def __init__(self):
        self.attribute = 'attribute'

obj = MyClass()
getattr(obj, 'attribute', None)  # returns 'attribute'
getattr(obj, 'other_attribute', None)  # returns None

Note that hasattr and getattr will only work for attributes that are defined on the object itself, or on its class or any of its superclasses. They will not work for attributes that are stored in the object's __dict__ attribute, unless the attribute is defined in the class's __slots__ attribute.

Got an article suggestion? Let us know
Explore more
Licensed under CC-BY-NC-SA

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

We are hiring.

Software is our way of making the world a tiny bit better. We build tools for the makers of tomorrow.

Explore all positions →