How to Fix the TypeError: Object of Type NoneType Has No Len() in Python
-
Cause of the
TypeError: object of type 'NoneType' has no len()in Python -
Fix the
TypeError: object of type 'NoneType' has no len()in Python
In Python, the len function is used to find the length of any collection. But, when you try to pass a None value to the len function, this causes a TypeError: object of type 'datatype' has no len() error because the len function does not support the None value.
Cause of the TypeError: object of type 'NoneType' has no len() in Python
As discussed, in Python None value has no length; the len function does not support it. To understand it better, let’s have an example.
Code example:
none_val = None
print(type(none_val))
print(len(none_val))
Output:
<class 'NoneType'>
TypeError: object of type 'NoneType' has no len()
As you can see in the above example, we are finding the length with the len function of the none_val variable whose value is None. But this has caused a TypeError: object of type 'NoneType' has no len().
Let’s see whether the len function supports the None type to understand the reason for this error.
none_val = None
print(dir(none_val))
Output:
['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
As you can see in the list provided by the dir() function, it is used to enlist all the built-in functions of the object. In this case, we have passed the object of the None type to the dir function, which displayed all the built-in supported functions.
But the point to note here is that the len function is not included in the above list.
Fix the TypeError: object of type 'NoneType' has no len() in Python
Now, let’s try to fix the TypeError: object of type 'NoneType' has no len().
my_list = [1, 2, 3, 4, 5]
my_tpl = (1, 2, 3, 4, 5)
none_list = [None, None, None, None, None]
print("This length of my_list is ", len(my_list))
print("This length of my_tpl is ", len(my_tpl))
print("This length of none_list is ", len(none_list))
Output:
This length of my_list is 5
This length of my_tpl is 5
This length of none_list is 5
As you can see, when we try to find the length of a collection like a list or a tuple with the len function, it runs smoothly because len supports collections.
Also, you can find the length of any collection that contains None values. See the list none_list as displayed in the above example.
And to verify that any collection supports the len function, you can pass the collection to the dir function. See the example below.
my_list = [1, 2, 3, 4, 5]
print(dir(my_list))
Output:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
As you can see, this list has the len function, which means the collection list my_list supports the len function.
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedInRelated Article - Python Error
- Can Only Concatenate List (Not Int) to List in Python
- How to Fix Value Error Need More Than One Value to Unpack in Python
- How to Fix ValueError Arrays Must All Be the Same Length in Python
- Invalid Syntax in Python
- How to Fix the TypeError: Object of Type 'Int64' Is Not JSON Serializable
- How to Fix the TypeError: 'float' Object Cannot Be Interpreted as an Integer in Python
