https://docs.python.org/3/reference/datamodel.html#special-method-names