Зачем в классе-наследнике вызывать инициализацию класса-родителя в Python? Читаю про PyQt5, на сайте увидел такой код:import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon

class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()

def initUI(self):
self.setGeometry(300, 300, 300, 220)
self.setWindowTitle('Icon')
self.setWindowIcon(QIcon('web.png'))

self.show()


if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
Непонятна строкаsuper().__init__()
Зачем мы в классе Example вызываем инициализацию класса QWidget? Что это нам дает? Мы же при простом наследовании (при объявлении класса Example в скобках указали класс QWidget) уже унаследовали все свойства и методы или нет?

21 Авг 2019 в 06:59
231 +1
1
Ответы
1

Вы вызываете инициализацию класса-родителя с помощью super().__init__() для того, чтобы все методы и атрибуты, определенные в классе-родителе, были также доступны в классе-наследнике.

Хотя при объявлении класса Example в скобках вы указали унаследование от класса QWidget, вызов метода super().__init__() позволяет настроить объект в соответствии с общими установками класса-родителя (например, настройка размера и заголовка окна, установка иконки).

Поэтому в данном случае вызов инициализации класса-родителя является хорошей практикой, чтобы убедиться, что работа с классом-наследником будет правильной и корректной.

20 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир