Pytorch Module: Why do we pass the class and object to the parent class initializer, in the __init__ method?
Why do we pass the class and the object (self) to the parent's init method for pytorch Module? For e.g.

class RNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
    super(RNN, self).__init__()


Why is the class RNN, as well as the object (self) passed to the parent's init?

Every method receives the instance of the class invoking the method as its first argument; __init__ is no exception. foo = RNN(...) causes foo.__init__(...) to be called, which is equivalent to RNN.__init__(foo, ...).

super returns a "proxy" for the instance indicated by its arguments. The class indicates the starting point in the MRO to decide which class the proxy represents, and the second argument indicates which instance. You virtually  never pass anything other than the class and self, and in Python 3 this is the default: super().__init__().
