Container objects
Containers are objects that implement a __contains__
method (that usually returns a Boolean value). This method is called in the presence of the in
keyword of Python.
Something like the following:
element in container
When used in Python becomes this:
container.__contains__(element)
You can imagine how much more readable (and Pythonic!) the code can be when this method is properly implemented.
Let's say we have to mark some points on a map of a game that has two-dimensional coordinates. We might expect to find a function like the following:
def mark_coordinate(grid, coord): if 0 <= coord.x < grid.width and 0 <= coord.y < grid.height: grid[coord] = MARKED
Now, the part that checks the condition of the first if
statement seems convoluted; it doesn't reveal the intention of the code, it's not expressive, and worst of all it calls for code duplication (every part of the code where we need to check the boundaries before proceeding will have to repeat that if
...