When I read code from others, I found someone defines __reduce__ for the class accepting arguments. For instance, here. If you are not aware, __reduce__ magic method is for pickling a Python object.

    def __reduce__(self, args=(), kwargs=None):
        kwargs = {} if not kwargs else kwargs
        return (unpickle_backend, (self.__class__, args, kwargs))

So I quote the document:

The interface is currently defined as follows. The __reduce__() method takes no argument and shall return either a string or preferably a tuple (the returned object is often referred to as the “reduce value”).