Я думаю, вы бы выиграли от простого примера.Подумайте о том, когда вы создаете экземпляр класса.Вам не нужно предоставлять никаких параметров, если вы просто оставляете конструктор класса как имеющий единственный аргумент 'self'.
my_dog = Dog()
Однако, как и в случае с другими функциями, вы можете захотеть предоставить некоторую информацию дофронт о собаке, которую вы создаете.Скажем, всякий раз, когда вы хотите создать объект Dog, вы хотите указать его имя и то, лает ли он и кусается.При настройке класса вашей собаки вы можете указать в конструкторе, что они должны быть указаны при создании экземпляра класса Dog:
class Dog(object):
def __init__(self, name, barks, bites):
self.name = name
self.barks = barks
self.bites = bites
Теперь, когда вы создаете экземпляр класса, вы указываете эти параметрыаванс:
my_dog = Dog('Rover', barks=True, bites=False)
Это означает, что вы контролируете, какую информацию необходимо передать при создании экземпляра вашего класса.В этом случае автор кода хочет, чтобы часть информации, относящаяся к «экрану», использовалась при создании экземпляра класса.Другие классы, которые вы пишете, могут не нуждаться в дополнительной информации, поэтому они просто используют 'self'.
Так же, как при написании функций, вы отвечаете за то, какие параметры они принимают, и это точно так же, как и с классами.