Функция super() python
class A:
def __init__():
print(1)
class B(A):
def __init__():
super(A , self).__init__()
print(2)
obj = B()
Почему интерпретатор выводит только в консоль 2, я ожидал увидеть там ещё и 1.
Я не понимаю как работает функция super(). Если в данном коде указать эту функцию без аргументов, то все функции print успешно будут выведены, а так выводится только 2 в консоль.
Объясните как работает функция super с аргументами и без?
Ответы (1 шт):
У Вас неправильно выполнено наследование. Функция super() может принимать 2 параметра super([type [, object]]). Первый аргумент – это тип, к предкам которого мы хотим обратиться. А второй аргумент – это объект, к которому надо привязаться.
Также обязательно требуется указание self для конструктора __init__.
class A:
def __init__(self):
print(1)
class B(A):
def __init__(self):
super(B, self).__init__() # либо super().__init__()
print(2)
obj = B()
Если же Вы используете super(A, self).__init__(), то Вы обращаетесь к родителю A — простому объекту без print(1)