Помогите пожалуйста понять ООП в python на данном участке кода:

import cocos

class HelloCocos(cocos.layer.Layer):
    def __init__(self):
        super().__init__()
        label = cocos.text.Label("Hello Cocos", font_name = "Times New Roman", font_size = 32, anchor_x = "center", anchor_y = "center")
        label.position = 640, 360
        self.add(label)


cocos.director.director.init(width=1280, height=720, caption="CatGame")

hello_layer = HelloCocos()

test_scene = cocos.scene.Scene(hello_layer)

cocos.director.director.run(test_scene)

Я новичок, и до сих пор не понимаю Классы в python. У меня есть несколько вопросов:

  1. Зачем при создании класса подается cocos.layer.Layer
  2. Что делает функция __init__ и что значит self
  3. Что значит super().__init__()
  4. Что значит self.add(label)
  5. Зачем некоторые программисты пишут if __name__ == "__main__":?

Ответы (1 шт):

Автор решения: Oidaho

По порядку:

  • Тут из библиотеки вызывается класс, уже содержащий какие-то атрибуты и функции. В данном случае, класс HelloCocos наследует Layer.
  • __init__ - функция инициализация экземпляра класса. (Не путать с __new__, она создает объект.) Ключевое слово self - указатель на созданный экземпляр. Т.е. для того, чтобы вызвать атрибут\функцию экземпляра, надо обратиться к нему через его указатель (self).
  • super().__init__() - точно такая же инициализация экземпляра класса, но для класса Layer, от которого унаследован класс HelloCocos.
  • self.add(label) - вызывает у текущего экземпляра класса функцию add(label), которая, вероятнее всего, описана внутри класса Layer.
  • __name__ == "__main__": - хорошая практика и точка входа в программу. В Python она не обязательна. Очень полезна при написании модулей. Код, который будет написан внутри данной конструкции, будет исполняться только в случае, если файл, где описан код, будет запущен напрямую, а не вызван в другом файле.
→ Ссылка