
Python AttributeError: NoneType object has no attribute get means that you are trying to call the get() method on a None object.
This error usually occurs when you mistake a None object for something else.
Why this error occurs
To generate this error you can call the get() method from a None object as shown below:
obj = None
result = obj.get("url") # ❌
Because the obj variable contains a None value, Python responds with the following error message:
Traceback (most recent call last):
File ...
result = obj.get("url")
AttributeError: 'NoneType' object has no attribute 'get'
Let’s see how to fix this error next
How to fix ‘NoneType’ object has no attribute ‘get’
get() is a method of the dictionary object that’s used to get the value of a key in a dictionary object.
Here’s an example to use the method:
my_dict = {"name": "Nathan"}
result = my_dict.get("name")
print(result) # Nathan
The error means you are calling the get() method from a NoneType object instead of a dictionary object.
One way to avoid this error is to check the type of your variable with the isinstance() function.
Add an if-else statement so that you only call the get() method when the variable is a dictionary as follows:
obj = {"name": "Nathan"}
if isinstance(obj, dict):
print("obj is a dictionary.")
obj.get("name") # ✅
else:
print("obj is not a dictionary.")
If you know that you only get a dictionary object, you can also use the is not None expression to avoid calling get on a NoneType object.
This is especially useful when you are looping over a list of dictionary objects, where you may get one or two elements that have None value:
result = [
{"name": "Nathan"},
None,
{"name": "Lysa"},
None,
]
for element in result:
if element is not None:
print(element.get("name"))
This way, the None values in the list won’t cause an error as they will be skipped.
Now you’ve learned how to fix Python AttributeError: NoneType object has no attribute get. Very nice! 👍