When running Python code, sometimes you get an error that says:
AttributeError: NoneType object has no attribute 'something'
The ‘something’ attribute here can be any function or attribute that you’re trying to access from the object.
This error usually occurs when you get a
None object instead of any other object you think you’re getting.
For example, suppose I try to call the
join() method thinking I have a
my_str = None my_str.join(", ")
The output will be:
Traceback (most recent call last): File "main.py", line 3, in <module> my_str.join(", ") AttributeError: 'NoneType' object has no attribute 'join'
Here, the error says ‘NoneType’ object has no attribute ‘join’ because the
None object in Python doesn’t have the
The same scenario applies no matter what attribute you’re trying to access or call.
To resolve this error, you need to avoid accessing the attribute that’s not defined in the object.
One way to do so is to use a
try-except block to handle the error gracefully when the object is actually
my_str = None try: my_str.join(", ") except AttributeError: print("The attribute doesn't exist") # ... continue code execution
By using a
try-except block, the error won’t stop the code execution.
Another way to avoid this error is to make sure that you’re not assigning
None to the variable in the lines between the declaration of that variable and the line where you call the attribute.
In the following example, the variable
my_str got assigned a
None object in the middle:
my_str = "abcdef" my_str = None try: my_str.join(", ") except AttributeError: print("The attribute doesn't exist")
Here, you can see the
my_str variable is assigned a
None right before the
You need to avoid doing so to resolve this error.
AttributeError: NoneType object has no attribute 'something' occurs in Python whenever you attempt to access an attribute or call a function that’s not defined in the
Most likely, you somehow got the original object replaced by
None, or you got one from an API or function call.
To resolve this error, you can use a
try-except block to catch when you accessed an attribute from a
If you have access to the original variable source, you can also make sure that you didn’t assign a
None to the variable by accident.
I hope this tutorial helps. Happy coding!