Следующий код
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 (растяжка)