Python has all kinds of special, or rather, magic methods that allow for
customizing all kinds of class behavior. There is __init__()
, __bool__()
,
and so many others.
The thing they all have in common is that their names are wrapped in double underscores. This is why they are called dunder methods.
Some of these are used every single day, like the __init__()
method for
defining how a class should create an object. Others, used from time to time,
are for overriding how comparisons or conversions happen. E.g. you may want to
override __bool__()
or __len__()
to customize the truthiness of a custom
class.
There are so many others, ones you probably haven't even heard of. To see a full listing, check out this cheat sheet of every dunder method.
Note: these are not to be confused with dunder attributes which are things
like __name__
, __file__
, and __version__
which correspond to a value that
you can access in a specific context rather than behavior to override.