Python has a pleasant definition of falsity. The reference manual lists a large number of values that will test as equivalent to False. This includes things such as False, 0, '', (), [], and {}. Objects not included in this list will test as equivalent to True.
Often, we'll want to check for an object being not empty with a simple statement, as follows:
if some_object: process(some_object)
Under the hood, this is the job of the bool() built-in function. This function depends on the __bool__() method of a given object.
The default __bool__() method returns as True. We can see this with the following code:
>>> x = object() >>> bool(x) True
For most classes, this is perfectly valid. Most objects are not expected to be False. For collections, however, the default behavior is not appropriate. An empty collection should...