Python3, супер, без точек, два аргумента - PullRequest
0 голосов
/ 10 июля 2019

Следующий код

class A:
    def spam(self, a, b):
        print('[A.spam] %r' % [a, b])


class B(A):
    def spam(self, c, d):
        # super().spam(c, d)
        sup = super(self.__class__, self.__class__)
        f = getattr(sup, 'spam')
        f(self, c, d)

дает

>>> b = B()
>>> b.spam(3, 4)
[A.spam] [3, 4]

Где 'super (). Spam (c, d)', после прочтения super , вызываетнет вопросов.Это «супер (тип, тип)», что озадачивает меня.Он дает объект sup (связанный суперобъект), через который можно получить доступ к атрибутам суперкласса.Я хотел бы понять логику конструкции super (type, object-or-type).Похоже, что контекст (например, наличие '.'), Где используется super (), является жизненно важным и меняет большую часть логики super ().

Использование

Python 3.5.3,

Debian GNU / Linux 9.9 (растяжка)

...