Модуль Pytorch: Почему мы передаем класс и объект инициализатору родительского класса в методе __init__? - PullRequest
0 голосов
/ 02 февраля 2020

Почему мы передаем класс и объект (self) методу init родителя для модуля pytorch? Например,

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

Почему класс RNN, а также объект (self) передаются в родительский init?

1 Ответ

0 голосов
/ 02 февраля 2020

Каждый метод получает экземпляр класса, вызывающий метод в качестве первого аргумента; __init__ не является исключением. foo = RNN(...) вызывает foo.__init__(...) для вызова, что эквивалентно RNN.__init__(foo, ...).

super возвращает "прокси" для экземпляра, указанного его аргументами. Класс указывает начальную точку в MRO, чтобы решить, какой класс представляет прокси, а второй аргумент указывает, какой экземпляр. Вы практически никогда не пропускаете ничего, кроме класса и self, а в Python 3 это значение по умолчанию: super().__init__().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...