In every programming language, one of the most common things are errors. Errors are raised when we a block of code cannot be partially or completely executed as it violates some basic built in logic of the programming language.
Errors can be of different types, such as runtime errors, logical errors, compilation errors, and many more. In python, the errors that are most commonly raised are syntax errors, value errors, and attribute errors among a hundred others.
In this article, we will discuss about python attribute errors and what are its possible causes. We will also look at how we can solve them and possibly avoid them in the future.
What are Attribute errors and what are the causes?
When an attribute assignment fails or a faulty reference is made, python raises an attribute error.
For example, if we have a variable called
"num" and we assign an integer value of 10 to it, then the data type of the variable
"num" will be of integer type. Now, if we try to
append() another value to the
"num" variable, it will raise an attribute error. Here, the problem will arise because there is no
append() function for an integer literal. Hence attribute cannot be assigned to it.
Another example will be an indirect case which arises due to a syntax error. While writing the code if we write
"apend()" instead of
"append()" to a list type object, it will raise an attribute error due to the missing “p” in append. Originally a mistake in syntax of the code, results in wrong reference call and hence ultimately raises an attribute error.
Other syntax errors such as indentation mismatch, which is a huge part of python itself can also raise this error. User defined classes where there are missing spaces or wrong tabs can also raise this error.
What does An attribute error look like?
If we take the first example and run the code for the first example, we will get something as shown below:
num= 10 #assigning the int variable num.append(6) #trying to append integer literal print(num)#trying to display the result
The above code will raise the attribute error as shown below:
Traceback (most recent call last): File "main.py", line 2, in <module> num.append(6) #trying to append integer literal AttributeError: 'int' object has no attribute 'append'
If we combine both the causes in the second and third example from the previous sections, an attribute error may also be raised by user defined classes as shown in the code shown below:
#defining a class class ARR(): #defining object def __init__(self): #object created and value assigned self.first="Hello" #driver code OBJECT= ARR() print(OBJECT.first) #trying to display something that doesn't exist print(OBJECT.second)
The above code will result in:
Hello Traceback (most recent call last): File "main.py", line 11, in <module> print(OBJECT.second) AttributeError: 'ARR' object has no attribute 'second'
Also read: Numpy LinAlgError – Handling Matrix-related Errors.
How to fix an attribute error?
An attribute error can be avoided by being careful about the functions and availability of features of a particular data type. We must also be careful when defining a user class as to not make mistakes in the syntax or indentations. Nowadays, almost all IDEs have inbuilt syntax recognition and these can identify possible syntax errors when code is being written.
Another way to handle attribute error would be to use exception handling in python. Exception handling is very useful when writing huge blocks of code. The try and except method in python makes exception handling easier and very efficient.
Lets look at how we can use the try and except block to avoid this type of errors.
#integer literal defined num = 10 #the try and except block try: num.append(9) except AttributeError: print('No such attribute found')
The above code would yield the following output:
No such attribute found
We have a fantastic article on exception handling using try and except blocks on askpython, read it here!
In this article we have gone through one of the basic errors raised by python code. Attribute error is raised in many cases as we have discussed above in detail. The try and except method comes in handy when dealing with this type of error. Huge blocks of code where a user might subconsciously make a syntax error can also give rise to attribute errors. To know more about different types of python errors, click here.