Other Properties, Attributes, and Methods
Learn about container objects, dynamic attributes for objects, and callable objects in Python.
Container objects
Containers are objects that implement a __contains__
method (which usually returns a Boolean
value). This method is called in the presence of the in
keyword in Python and looks something like this:
element in container
When used in Python, it becomes this:
container.__contains__(element)
We 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
statement).
What if the map itself (called grid
on the code) could answer this question? Even better, what if the map could delegate this action to an even smaller (and hence more cohesive) object?
We could solve this problem in a more elegant way with object-oriented design and with the help of a magic method. In this case, we can create a new abstraction to ...
Get hands-on with 1400+ tech skills courses.