Мой коллега написал код, аналогичный следующему сегодня, попросил меня взглянуть, и мне потребовалось некоторое время, чтобы обнаружить ошибку:
class A():
def __init__(self):
print('A')
class B(A):
def __init__(self):
super(B).__init__()
b = B()
Проблема здесь в том, что нет параметра self для super() в конструкторе B. Меня удивило то, что в этом случае абсолютно ничего не происходит, т.е. Нет ошибки, ничего. Что содержит объект super, созданный super(B)? Как объект, он явно имеет конструктор, так что то, что вызывается, но как этот объект связан с B? В частности, почему этот допустимый код и где-то не выбрасывает исключение? Является ли super(B) объектом с некоторым фактическим использованием и что это будет?